批处理删除重复的文件

如果你下载二进制文件(音乐、照片等),你可能最终会有很多除了名字以外完全相同的文件。                                            
这里有一个解决方案,可以删除重复的文件。如果你不想删除任意的重复文件,你可以直接替换这一行,然后手动处理。 

if not errorlevel 1 del %fnameold%
替换成:
if not errorlevel 1 pause

 

 @echo off
:: 延迟环境

Setlocal Enabledelayedexpansion
set test=foo
for %%x in (1 2 3) do set test=!test!%%x
if %test%==foo123 goto OKAY
cls
echo 这个批处理文件将删除其目录中的重复文件.
echo.
pause
goto DONE

:OKAY
set oldsize=0
set fnamenew=foo

::  按文件大小对当前文件夹下文件进行排序

for /f %%x in ('dir /os /b *.*') do call :PROC %%x
goto DONE

:PROC
set fnameold=!fnamenew!
set fnamenew= %1

::  以空格为分割,搜索含有/的行,取第4个字段(文件的大小)保存到newsize变量中

::2021/08/07  11:18             5,433 help.txt

for /f "tokens= 3 delims= " %%x in ('dir %1 ^| find "/"') do set newsize=%%x
call :CMP "%oldsize%" "%newsize%" %1
goto DONE

:CMP
echo %2   %3
if [%1]==[%2] call :HIT
set oldsize=!newsize!
goto DONE

:HIT
fc %fnamenew% %fnameold% | find "no differences"
if not errorlevel 1 del %fnameold%
goto DONE

:DONE