[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
这里可以call一下 ,虽说不太喜欢用
  1. @echo off
  2. set exr="symlink" "txt" "jpg" "doc"
  3. call :listdir "%cd%"
  4. pause
  5. exit
  6. :listdir
  7. for /d %%d in ("%~1\*") do set "d=%%d"&call :listdir "%%d"
  8. if defined d (
  9.         set "n="
  10.         for %%i in ( %exr%) do if exist "%d%\*.%%i" set n=1&move /y "%d%\*.%%i" "%d%\.." >nul 2>nul
  11.         if defined n rd /s /q "%d%"
  12. )
  13. set "d="
复制代码
1

评分人数

    • 77七: 感谢分享技术 + 1

TOP

本帖最后由 terse 于 2024-4-12 16:34 编辑

回复 25# 77七
加引号
其实这里是开了延迟的,可以!str!这样!str!

TOP

回复 27# 77七
是的,这里是开了延迟的,可以!str!

TOP

这样CALL,系统开销是否会有所不同呢
  1. @echo off
  2. call :listdir "%cd%"
  3. echo %n%
  4. pause
  5. exit
  6. :listdir
  7. for /d %%d in ("%~1\*") do (
  8.     set "d=%%d"
  9.     call :listdir "%%d"
  10. )
  11. if defined d (
  12.    set /an+=1
  13. )
  14. set "d="
复制代码

TOP

回复 37# aloha20200628
差距这么大,也许环境和目录结构的不同,测试结构也会不同,下面代码创建的空目录试了一下,相比较还好CALL并不是太耗资源,
  1. for /l %%a in (1,1,10) do  for /l %%b in (1,1,10) do for /l %%c in (1,1,10) do for /l %%d in (1,1,10) do for /l %%e in (1,1,10) do md test\%%a\%%b\%%c\%%d\%%e\ 2>nul   
复制代码

TOP

返回列表