|
本帖最后由 Promanor 于 2023-8-6 12:42 编辑
代码是节选自几年前本吧的帖子http://www.proewildfire.cn/forum ... =%C5%FA%B4%A6%C0%ED,但是原帖的代码有缺陷,缺了个重要命令,文件太多会无法改,我补上了修正命令。而且我加了个遍历功能,子目录下 的文件也可以遍历删除旧版本了,但是本人水平有限,代码比较臃肿,期待大神来完善优化代码。我尝试过用dir直接遍历子目录文件,结果是没有结果 ,只能开始是cd进入指定文件夹先把指定文件夹下的文件先删除旧版本,再dir遍历子目录,CD进入每个子目录删除旧版文件。path1=后面的路径是自由设置的路径,填写你要清理旧文件的完整目录名称。测试前记得备份自己的文件。
还有个要求是目录名称不能有空格,有空格是不行的,带空格的目录下不能完成清理。不知道有没有大神能解决。
- @echo off
- title 批量删除旧版本
- set "path1=D:\ptc\temp\Creotemp8.0"
- cd %path1%
- for %%I in (*.*) do (
- setlocal EnableDelayedExpansion
- set pqname=%%~nI
- set phname=%%~xI
- for %%I in (!pqname!.*) do (
- set ppname=%%~xI
- set pppname=!ppname:~1,5!
- set phhname=!phname:~1,5!
- set kk="!pqname!!ppname!"
- if !phhname! GTR !pppname! del "!kk!"
- )
- EndLocal EnableDelayedExpansion
- )
- for /f %%I in ('dir/a:d/b/s') do (
- cd %%I
- for %%I in (*.*) do (
- setlocal EnableDelayedExpansion
- set pqname=%%~nI
- set phname=%%~xI
- for %%I in (!pqname!.*) do (
- set ppname=%%~xI
- set pppname=!ppname:~1,5!
- set phhname=!phname:~1,5!
- set kk="!pqname!!ppname!"
- if !phhname! GTR !pppname! del "!kk!"
- )
- EndLocal EnableDelayedExpansion
- )
- )
- pause
复制代码
|
|