Windows fc игнорирует вывод, когда нет разницы

Я использую FC filename1 filename2 >> myLog.txt(где myLog.txt существует) команда под Windows, чтобы сравнить два файла. Я использую команду в цикле, чтобы я мог сравнить много пар файлов.

Я хочу игнорировать вывод, когда FC выходы:

Comparing files filename and filename2
FC: no differences encountered

Потому что он заполняет выходной файл нежелательной информацией.

Как я могу это сделать? И, если возможно, могу ли я посчитать количество "успешных"(то, что выходные данные я игнорирую) сравнивает?

Я пробовал с FC filename1 filename2 2> myLog.txt перенаправлять только поток ошибок, но он ничего не выводит, то есть команда выводит только в стандартный поток.

2 ответа

Решение

Вы не указали, как вы "используете команду в цикле, чтобы я мог сравнить множество пар файлов" (как вы получаете второй файл каждой пары в цикле?), Поэтому вы должны соответствующим образом изменить приведенный ниже код.

@echo off
setlocal

set successfull=0
(for %%a in (filename1*.txt) do (
   FC "%%a" "%%~Na2.txt" > diffs.tmp
   if errorlevel 1 (
      type diffs.tmp
   ) else (
      set /A successfull+=1
   )
)) > C:\other\folder\myLog.txt
del diffs.tmp

echo Successfull compares: %successfull%

Если myLog.txt файл должен расти при каждом запуске этой программы, а затем просто изменить > перенаправление >> добавить один...

Достаточно просто сделать это, передавая выходные данные FC в FIND /V или FINDSTR /V. Проверьте справку по этим командам. Если у вас есть дополнительные вопросы, пожалуйста, оставьте свой код.

Другие вопросы по тегам