fc
を使う
fc
コマンドを使うと、2つのファイルの差異を表示することができます。
これを利用して、2つのファイルが一致するかどうかを確認し、その結果だけを表示するコマンドです。
一致するかどうかだけ表示
REM カレントディレクトリに下記3ファイルが存在する、という前提です。
REM * fileA.bin
REM * fileA2.bin (fileA.binと一致)
REM * fileB.bin (fileA.binとは異なる)
REM 【異なるファイルの比較】
fc fileA.bin fileB.bin >NUL && echo 一致(%ERRORLEVEL%) || echo 異なるorエラー(%ERRORLEVEL%)
REM 結果:
REM 異なるorエラー(0)
REM 【一致するファイルの比較】
fc fileA.bin fileA2.bin >NUL && echo 一致(%ERRORLEVEL%) || echo 異なるorエラー(%ERRORLEVEL%)
REM 結果:
REM 一致(1)
REM 【指定されたファイル(1つ目)が存在しない】
fc fileC.bin fileB.bin >NUL && echo 一致(%ERRORLEVEL%) || echo 異なるorエラー(%ERRORLEVEL%)
REM 結果:
REM FC: FILEC.BIN を開けません。このファイルまたはフォルダーは存在しません
REM
REM 異なるorエラー(0)
REM 【指定されたファイル(2つ目)が存在しない】
fc fileA.bin fileC.bin >NUL && echo 一致(%ERRORLEVEL%) || echo 異なるorエラー(%ERRORLEVEL%)
REM 結果:
REM FC: FILEC.BIN を開けません。このファイルまたはフォルダーは存在しません
REM
REM 異なるorエラー(2)
REM 【指定されたファイル(両方)が存在しない】
fc fileC.bin fileD.bin >NUL && echo 一致(%ERRORLEVEL%) || echo 異なるorエラー(%ERRORLEVEL%)
REM 結果:
REM FC: FILEC.BIN を開けません。このファイルまたはフォルダーは存在しません
REM
REM 異なるorエラー(2)
疑問
なんで【指定されたファイル(1つ目)が存在しない】のときは%ERRORLEVEL%
が0
なんだろう? 2つ目と両方は2
なのに。