返回列表 发帖
这里可以call一下 ,虽说不太喜欢用
@echo off
set exr="symlink" "txt" "jpg" "doc"
call :listdir "%cd%"
pause
exit
:listdir
for /d %%d in ("%~1\*") do set "d=%%d"&call :listdir "%%d"
if defined d (
        set "n="
        for %%i in ( %exr%) do if exist "%d%\*.%%i" set n=1&move /y "%d%\*.%%i" "%d%\.." >nul 2>nul
        if defined n rd /s /q "%d%"
)
set "d="COPY
1

评分人数

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

TOP

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

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

TOP

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

TOP

这样CALL,系统开销是否会有所不同呢
@echo off
call :listdir "%cd%"
echo %n%
pause
exit
:listdir
for /d %%d in ("%~1\*") do (
    set "d=%%d"
    call :listdir "%%d"
)
if defined d (
   set /an+=1
)
set "d="COPY

TOP

回复 37# aloha20200628
差距这么大,也许环境和目录结构的不同,测试结构也会不同,下面代码创建的空目录试了一下,相比较还好CALL并不是太耗资源,
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   COPY

TOP

返回列表