我正在使用 Windows NT(ish) shell 脚本语言编写 shell 脚本。(我的电脑装有 Windows 10。)我想检查两个文本文件是否相同。如果文件相同,我希望我的脚本执行一件事。如果文件不相同,我希望我的脚本执行其他操作。脚本不应暂停以要求手动输入更多数据。
fc
“类似问题”列表中包含有关 Macintosh 和 bash shell 脚本的问题。它还提供了有关从命令行运行或的答案comp
,这些答案提供了详细的输出。不幸的是,fc
不会将结果返回给%errorlevel%
,而是comp
要求手动输入数据,而不是简单地退出。
我有一本 Tim Hill 的关于 Windows NT shell 脚本的书。第 216 页有以下代码行,其中%D1%
和%D2%
是目录,但我不知道如何修改它以仅对单个文件起作用:
for /f "tokens=*" %%I in ('fc /b %D1%\*.* %D2%\*.* ^| find /v "Comparing" ^| find /v "FC: no*"') do (set /a ERRORS+=1) & (echo %%I)
答案1
你可以使用这个代码:
fc /b file1 file2 > nul
if errorlevel 1 goto files_differ
[files are the same, do something here]
:files_differ
[files are not the same, do something here]
如果文件不相同,则errorlevel
返回。1
表示其中一个文件丢失errorlevel
。2
> nul
用于隐藏命令的输出
或者,您可以使用忙碌箱对于 Windows,并检查文件哈希值是否相同。