フォルダ内ファイル比較
2023年12月15日 19:09
textファイルの比較は以下でできそう。しかし、fcコマンドは、画像の比較はできないらしい。
@echo off
rem 遅延環境変数の展開
rem 変数の中身を見るときに「%(パーセント)」ではなく「!(エクスクラメーションマーク)」で囲むと、読み込むときではなく実行するときに値に置き換えるsetlocal enabledelayedexpansion
rem 比較フォルダの設定set "folder1=before"set "folder2=after"set "logFile=compare_log.txt"
echo Comparing files in %folder1% and %folder2%...
rem Initialize log fileecho. > %logFile%
rem Compare files in both foldersfor %%F in ("%folder1%\*") do (rem folder1のファイル名のみ取得set "file1=%%~nxF"set "file2=%folder2%\!file1!"rem folder2に、同じファイル名のものが存在するかをチェックif exist "!file2!" (fc "!folder1!\!file1!" "!file2!" > nulif errorlevel 1 (rem 不一致echo Files differ: !file1! >> %logFile%)) else (echo File only in %folder1%: !file1! >> %logFile%))
rem Check for files only in folder2for %%F in ("%folder2%\*") do (set "file2=%%~nxF"set "file1=%folder1%\!file2!"
if not exist "!file1!" (echo File only in %folder2%: !file2! >> %logFile%))
echo Comparison completed. Check %logFile% for details.
endlocal
画像は↓でできるらしいが、コピーしたファイルでも差分としてでてしまう。
@echo offsetlocal enabledelayedexpansionset "before=before"set "after=after"set "logFile=compare_log.txt"set "ImageMagickPath=C:\Program Files\ImageMagick-7.0.11-Q16-HDRI" REM ImageMagickのインストール先を指定echo Comparing files in %before% and %after%...rem Initialize log fileecho. > %logFile%rem Compare text files in both foldersfor %%F in ("%before%\*.txt") do (set "file1=%%~nxF"set "file2=!after!\!file1!"if exist "!file2!" (fc "!before!\!file1!" "!file2!" > nulif errorlevel 1 (echo Text files differ: !file1! >> %logFile%)) else (echo File only in %before%: !file1! >> %logFile%))rem Compare image files in both foldersfor %%F in ("%before%\*.png") do (set "file1=%%~nxF"set "file2=!after!\!file1!"if exist "!file2!" ("%ImageMagickPath%\magick" compare -metric AE "!before!\!file1!" "!file2!" NUL 2>nulif !errorlevel! neq 0 (echo Images differ: !file1! >> %logFile%)) else (echo File only in %before%: !file1! >> %logFile%))rem Check for files only in after folderfor %%F in ("%after%\*") do (set "file2=%%~nxF"set "file1=!before!\!file2!"if not exist "!file1!" (echo File only in %after%: !file2! >> %logFile%))echo Comparison completed. Check %logFile% for details.endlocal