Board logo

标题: [文件操作] 批处理如何比较两个文件夹 并删除多余文件 [打印本页]

作者: wxhyrzkkx    时间: 2021-1-17 21:03     标题: 批处理如何比较两个文件夹 并删除多余文件

请教各位大大
我有两个文件夹  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给删掉  

先谢谢了
作者: lancer    时间: 2021-1-17 23:02

  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
复制代码
根据自己的情况进行修改吧
作者: wxhyrzkkx    时间: 2021-1-17 23:13

回复 2# lancer


   很好用 谢谢啊
作者: qixiaobin0715    时间: 2021-1-18 08:19

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

作者: qixiaobin0715    时间: 2021-1-18 09:16

再说2楼代码不需要setlocal enabledelayedexpansion吧。
作者: lancer    时间: 2021-1-18 10:38

回复 5# qixiaobin0715


    是的,不需要变量延迟。你的代码更好用,我也是才学习批处理。
作者: smss    时间: 2021-1-18 11:16

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





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2