我一直在清理 4 TB 驱动器上的一些文件。问题是,我有许多重复的文件。这些副本的末尾附加了一个数字,因此很容易“找到”。
但是,我需要一种快速删除它们而不影响原始文件的方法。
例如:
03 歌唱 By.mp3
03 歌唱 By 1.mp3
我需要删除任何有 1.mp3
我试过这个:
for /R C:\MUSICTEST\ %F in (*1.mp3) do del "%F"
但它正在删除这两个文件。
想法?想法?
我一直在清理 4 TB 驱动器上的一些文件。问题是,我有许多重复的文件。这些副本的末尾附加了一个数字,因此很容易“找到”。
但是,我需要一种快速删除它们而不影响原始文件的方法。
例如:
03 歌唱 By.mp3
03 歌唱 By 1.mp3
我需要删除任何有 1.mp3
我试过这个:
for /R C:\MUSICTEST\ %F in (*1.mp3) do del "%F"
但它正在删除这两个文件。
想法?想法?
@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
也存在于同一目录中。如果是这样,比较两者,如果它们相同,则将删除行回显到“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”文件内容相同的
“it”长度相同,但不同
的“to”内容不同长度
需要运行产生的文件“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
应该显示卡住的文件名。
试试这个(echo
如果输出正常则删除:
for /f %%i in ('dir /s /b /a-d C:\MUSICTEST\*.mp3 ^|findstr /ir "[0-9]\.mp3$" ') do echo del "%%~i"