0

4 TB ドライブのファイルを少しクリーンアップしています。問題は、重複しているファイルが多数あることです。これらの複製には、それらの末尾に番号が追加されているため、簡単に「見つける」ことができます。

しかし、元のファイルに影響を与えずにそれらを削除する簡単な方法が必要です。

例えば:

03 歌って歌う.mp3
03 歌って歌う 1.mp3

1.mp3 を持つものはすべて削除する必要があります

私はこれを試しました:

for /R C:\MUSICTEST\ %F in (*1.mp3) do del "%F"

しかし、両方のファイルを削除しています。

アイデア?考え?

4

2 に答える 2

1
@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が表示されるはずです。

于 2013-05-04T03:05:16.323 に答える
0

echoこれを試してください(出力がOKの場合は削除します:

for /f %%i in ('dir /s /b /a-d C:\MUSICTEST\*.mp3 ^|findstr /ir "[0-9]\.mp3$" ') do echo del "%%~i"
于 2013-05-04T07:01:33.193 に答える