@ECHO off
SETLOCAL
(
for /R C:\MUSICTEST\ %%F in (*.mp3) do IF EXIST "%%~dpnF 1.mp3" (
FC /b "%%~fF" "%%~dpnF 1.mp3" >nul
IF NOT ERRORLEVEL 1 ECHO del "%%~dpnF 1.mp3"
)
)>musiczap.bat
このバッチは仕事をするはずです。
x.mp3
見つかったそれぞれについてx 1.mp3
、同じディレクトリに存在するかどうかを確認します。その場合は、2 つを比較し、それらが同一である場合は、delete 行を「musiczap.bat」ファイルにエコーします。
musiczap.bat
実行前の検閲はあなた次第です。
dir /s "c:\musictest\* 1.mp3"
* 1.mp3
その後、残りのファイルを明らかにする必要があります
これが私のテストです:
ターゲット ディレクトリ:
Volume in drive C has no label.
Volume Serial Number is 12A3-6FE2
Directory of c:\musictest
04/05/2013 10:55 <DIR> .
04/05/2013 10:55 <DIR> ..
04/05/2013 10:49 0 03 song to sing at 1.mp3
04/05/2013 10:45 0 03 song to sing by 1.mp3
04/05/2013 10:45 0 03 song to sing by.mp3
04/05/2013 10:55 5 03 song to sing it 1.mp3
04/05/2013 10:55 5 03 song to sing it.mp3
04/05/2013 10:54 0 03 song to sing to 1.mp3
04/05/2013 10:54 105,351 03 song to sing to.mp3
7 File(s) 105,361 bytes
2 Dir(s) 614,691,926,016 bytes free
バッチ実行の結果:
del "C:\musictest\03 song to sing by 1.mp3"
注:
"at" には " 1" しかないので削除されません
"by" は、"name" と "name 1" のファイルの内容
が同じ
ものだけです。長さ
ファイルを削除するには、作成されたファイル「musiczap.bat」を実行する必要があります。最初にそれを読んでいない限り、特に有効にしている場合は、おそらく良い考えではありませんECHO
。
バッチが動かなくなったように見える場合は、この変更されたバッチを試してください
@ECHO off
SETLOCAL
(
for /R C:\MUSICTEST\ %%F in (*.mp3) do IF EXIST "%%~dpnF 1.mp3" (
echo comparing "%%~fF" "%%~dpnF 1.mp3"
FC /b "%%~fF" "%%~dpnF 1.mp3"
IF NOT ERRORLEVEL 1 ECHO del "%%~dpnF 1.mp3"
)
)
これにより、大量のデータが生成される可能性があることに注意してください。しかし、おそらく何かが動揺していfc
ます。
問題の原因となっているファイル ペアがわからない場合は、行末に ">nul" を再度追加してfc
ください。これにより出力が抑制されますが、スタックfc
しているファイル名fc
が表示されるはずです。