[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何比较两个文件夹 并删除多余文件

请教各位大大
我有两个文件夹  D:\1   和D:\2
D:\1 里面的文件是   xxxxx_0.jpg xxxxx_0.jpg  ....xxxxx_1.jpg  文件后面总有 _0  _1  _2  这样
D:\2 里面的文件是   xxxxx.jpg    xxxxx.jpg     ....xxxxx.jpg       文件后面没有 _0  _1  _2  这样的

现在想让  D:\2 里面的文件参照  D:\1 里面的文件进行删除   
比如说  D:\1 里面没有00001_0.jpg 则把D:\2里面的00001.jpg给删掉  

先谢谢了

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=_ tokens=1" %%i in ('dir /b d:\1\*.jpg') do (
  4. echo %%i>>d:\1.txt
  5. )
  6. for /f "delims=" %%a in ('dir /b d:\2\*.jpg') do (
  7. echo %%~na>>d:\2.txt
  8. )
  9. for /f "delims=" %%b in ('type d:\2.txt') do (
  10. find "%%b" d:\1.txt || del "d:\2\%%b.jpg"
  11. )
  12. del d:\1.txt
  13. del d:\2.txt
  14. pause
复制代码
根据自己的情况进行修改吧

TOP

回复 2# lancer


   很好用 谢谢啊

TOP

回复 1# wxhyrzkkx
不用这么麻烦吧:
  1. @echo off
  2. for %%a in ("D:\2\*.jpg") do if not exist "D:\1\%%~na_*.jpg" del "%%a"
  3. pause
复制代码

TOP

再说2楼代码不需要setlocal enabledelayedexpansion吧。

TOP

回复 5# qixiaobin0715


    是的,不需要变量延迟。你的代码更好用,我也是才学习批处理。

TOP

举个栗子你尝尝
  1. robocopy "1" "2" *.* /nocopy /mir
复制代码

TOP

返回列表