如何在 Windows shell 脚本中检查两个文件是否相同?

如何在 Windows shell 脚本中检查两个文件是否相同?

我正在使用 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

表示其中一个文件丢失errorlevel2

> nul用于隐藏命令的输出

或者,您可以使用忙碌箱对于 Windows,并检查文件哈希值是否相同。

相关内容