本帖最后由 77七 于 2023-8-30 12:31 编辑
- @echo off
- rem 批处理保存为ansi编码格式。路径末尾以 \ 结束
- call :1 "c:\指定目录1\"
- call :1 "c:\指定目录2\"
- call :1 "c:\指定目录3\"
-
- for %%a in (c d e) do call :2 "%%a:\"
- pause & exit
-
- :1
- set _"%~1"=1
- rem 如果不需要排除子目录删除下一行
- for /r "%~1" /d %%d in (*) do set _"%%d\"=1
- exit /b
-
- :2
- for /r "%~1" %%i in (*.pdf *.doc *.xls) do (
- if not defined _"%%~dpi" (
- echo del "%%i"
- )
- )
- exit /b
复制代码
改进下2楼代码。如果子目录数量过多,还是会存在变量个数超限问题。单个环境的最大变量大小为 8192 字节。所有变量(包括变量名称和等号)的最大环境变量总大小为 65,536KB。
http://bbs.bathome.net/redirect.php?goto=findpost&ptid=29022&pid=145079
windows路径长度限制260字符。
粗略估算,一般应该不会超限,但是如果子目录数量过万,变量过万,批处理存在效率降低问题。 |