找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2857|回复: 4

[分享] 批处理实现遍历指定目录及子目录下所有文件,删除旧版本文件

[复制链接]

21

主题

328

回帖

4

威望

工程师

积分
422
发表于 2023-8-6 01:57 | 显示全部楼层 |阅读模式
本帖最后由 Promanor 于 2023-8-6 12:42 编辑

代码是节选自几年前本吧的帖子http://www.proewildfire.cn/forum ... =%C5%FA%B4%A6%C0%ED,但是原帖的代码有缺陷,缺了个重要命令,文件太多会无法改,我补上了修正命令。而且我加了个遍历功能,子目录下 的文件也可以遍历删除旧版本了,但是本人水平有限,代码比较臃肿,期待大神来完善优化代码。我尝试过用dir直接遍历子目录文件,结果是没有结果 ,只能开始是cd进入指定文件夹先把指定文件夹下的文件先删除旧版本,再dir遍历子目录,CD进入每个子目录删除旧版文件。path1=后面的路径是自由设置的路径,填写你要清理旧文件的完整目录名称。测试前记得备份自己的文件。
还有个要求是目录名称不能有空格,有空格是不行的,带空格的目录下不能完成清理。不知道有没有大神能解决。

  1. @echo off
  2. title 批量删除旧版本
  3. set "path1=D:\ptc\temp\Creotemp8.0"
  4. cd %path1%
  5. for %%I in (*.*) do (
  6.      setlocal EnableDelayedExpansion
  7.      set pqname=%%~nI
  8.      set phname=%%~xI
  9.      for %%I in (!pqname!.*) do (
  10.          set ppname=%%~xI
  11.          set pppname=!ppname:~1,5!
  12.          set phhname=!phname:~1,5!
  13.          set kk="!pqname!!ppname!"
  14.          if !phhname! GTR !pppname! del "!kk!"
  15.       )
  16.       EndLocal EnableDelayedExpansion
  17. )

  18. for /f %%I in ('dir/a:d/b/s') do (
  19. cd %%I
  20. for %%I in (*.*) do (
  21.      setlocal EnableDelayedExpansion
  22.      set pqname=%%~nI
  23.      set phname=%%~xI
  24.      for %%I in (!pqname!.*) do (
  25.          set ppname=%%~xI
  26.          set pppname=!ppname:~1,5!
  27.          set phhname=!phname:~1,5!
  28.          set kk="!pqname!!ppname!"
  29.          if !phhname! GTR !pppname! del "!kk!"
  30.       )
  31.       EndLocal EnableDelayedExpansion
  32. )
  33. )
  34. pause
复制代码

1

主题

936

回帖

63

威望

讲师

积分
1708

希望之星勋章

发表于 2023-8-6 11:51 | 显示全部楼层
为什么一定用批处理呢,感觉如果用VB好点,或者用其它编程的。
回复

使用道具 举报

21

主题

328

回帖

4

威望

工程师

积分
422
 楼主| 发表于 2023-8-6 12:40 | 显示全部楼层
暗菩提 发表于 2023-8-6 11:51
为什么一定用批处理呢,感觉如果用VB好点,或者用其它编程的。

批处理可以实现吧,其实我编程不太好。就是感觉批处理运行比较方便。
回复 0 1

使用道具 举报

1

主题

936

回帖

63

威望

讲师

积分
1708

希望之星勋章

发表于 2023-8-6 12:57 | 显示全部楼层
本帖最后由 暗菩提 于 2023-8-7 08:43 编辑
Promanor 发表于 2023-8-6 12:40
批处理可以实现吧,其实我编程不太好。就是感觉批处理运行比较方便。


没有说批处理不好,我也用,不过这种遍历用删除用编程软件实现的更方便完善些,还能和CREO软件集成。
回复 1 0

使用道具 举报

0

主题

186

回帖

0

威望

工程师

积分
206
发表于 2023-8-16 07:41 | 显示全部楼层
好用,感谢分享!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站为非营利性站点,部分资源为网友搜集或发布,仅供学习和研究使用,如用于商业用途,请购买正版。站内所发布的资源,如有侵犯你的权益,请发邮件联系我们,本站将立即改正或删除。

手机版|小黑屋|野火论坛(©2007~2024) ( 苏ICP备11036728号-2 )苏公网安备 32039102000103号|站长QQ28016688

GMT+8, 2024-9-29 23:29 , Processed in 0.134219 second(s), 21 queries .

快速回复 返回顶部 返回列表