我一直在清理4 TB驱动器上的一些文件。问题是,我有许多重复的文件。这些重复项附加了一个数字,因此它们很容易“找到”。
但是,我需要一种快速的方法来删除它们,而不会影响原始文件。
例如:
03 Song To Sing By.mp3
03歌曲唱歌由1.mp3
我需要删除任何具有1.mp3
的内容我试过了:
for /R C:\MUSICTEST\ %F in (*1.mp3) do del "%F"
但它正在删除这两个文件。
想法?想法?
答案 0 :(得分: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
。如果是,请比较两者,如果它们相同,则将删除行回显到'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”的文件内容相同的一个
“它”长度相同,但内容不同
“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
。
我看不出哪个文件对导致了问题,请将“&gt; nul”重新附加到fc
行的末尾。这将取消fc
输出,但应显示fc
卡住的文件名。
答案 1 :(得分:0)
试试这个(如果输出正常,则删除echo
:
for /f %%i in ('dir /s /b /a-d C:\MUSICTEST\*.mp3 ^|findstr /ir "[0-9]\.mp3$" ') do echo del "%%~i"