2

Я пишу сценарий оболочки, используя язык сценариев оболочки Windows NT(ish). (Мой компьютер имеет Windows 10.) Я хочу проверить, идентичны ли два текстовых файла. Если файлы идентичны, я хочу, чтобы мой скрипт делал одно. Если файлы не идентичны, я хочу, чтобы мой скрипт делал что-то еще. Скрипт не должен останавливаться, чтобы запросить ручной ввод дополнительных данных.

В списке "Похожие вопросы" есть вопросы о скриптах для Macintosh и bash. Он также имеет ответ о запуске fc или comp из командной строки, которые предоставляют подробный вывод. К сожалению, fc не возвращает результат в %errorlevel% , и comp запрашивает ручной ввод данных вместо простого выхода.

У меня есть копия книги Тима Хилла о сценариях оболочки Windows NT. Страница 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 ответ1

7

Вы можете использовать этот код:

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 используется, чтобы скрыть вывод команды

Кроме того, вы можете использовать Busybox для Windows и проверить, совпадают ли хэши файлов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .