使用Windows命令行删除重复文件

时间:2015-05-26 17:53:26

标签: batch-file

给定两个目录c:\ foo和c:\ bar我想删除c:\ bar中与c:\ foo中存在的文件相同的文件。我可以使用fc命令将c:\ bar中的每个文件与c:\ foo中的同名文件进行比较,并手动删除重复项。有没有一种简单的方法可以使用CMD自动执行此操作?

2 个答案:

答案 0 :(得分:4)

如果相同表示similar or alike in every way每种方式,不仅仅是 date size 因此强制二进制比较

imgix.fluid()

上述脚本中的关键点:

  • @ECHO OFF >NUL SETLOCAL enableextensions pushd "D:\bat\FooBar" for /F "delims=" %%G in ('dir /B /A:-D *.*') do ( call :proFC "%%~fG" "D:\bat\FooFoo\%%~nxG" ) popd ENDLOCAL goto :eof :raiseerror exit /B %1 :proFC call :raiseerror 321 fc /B "%~1" "%~2" >NUL 2>&1 if %errorlevel% EQU 0 ( echo del "%~1" ) else ( echo %errorlevel% "%~2" ) goto :eof 切换当前工作目录
  • pushd ...循环处理 Bar 文件夹的静态文件列表
  • call :proFC ...切换当前工作目录
  • popd结束脚本

goto :eof子例程通过:raiseerror

返回退出代码

exit /B %1富有成效的子程序

goto :eof将如下设置FC(但请参阅ErrorLevel点处的注释):

call :raiseerror 321

答案 1 :(得分:2)

@echo off

cd c:\bar
for %%a in (*.*) do for %%b in ("c:\foo\%%a") do (
   if exist "%%b" (
      if "%%~Ta %%~Za" equ "%%~Tb %%~Zb" (
         del "%%a"
      ) else (
         fc "%%a" "%%b" > NUL
         if not errorlevel 1 del "%%a"
      )
   )
)

如果两个文件的修改日期不同但相同,请删除比较中的%%~T..部分。