本帖最后由 aloha20200628 于 2024-8-30 20:40 编辑
批量检查子目录是否为空,又是一个老话题,看了一大把中外老帖,句式版本繁杂,最后简化为两点:
一。用 dir /b/a 方法检测比较可靠,但遭遇大数据目录会明显降速,老帖中一个速度略快的版本如下- for /r /d %%F in (*) do dir /b/a "%%F" | find /v "" >nul || echo,%%~fF
复制代码 还有一个powershell版本,但速度比2楼代码还慢- powershell -c "gci -dir -r | ? {[io.directory]::getfilesystementries($_.fullname).count -eq 0} | %% {$_.fullname}"
复制代码 二。用 rd+md 连环方法会明显提速,但在同一 for 循环内执行,表现有点‘奇葩’,即 rd 的返回值失稳,会影响其后的 && || 判断以及 exist 状态;有时还会出现后续 md 丢步的结果...
因为看上了方法二的速度优势,反复调试出一个版本,主要是采用 rd 和 md 分用两个 for 循环各自完成的方案,其可靠性明显改善,在此分享仅供参考...
- @echo off
- (for /f "delims=" %%d in ('dir /s/b/ad^|sort /r') do rd "%%d"&&echo,%%d)>"空目录列表.txt" 2>nul
- for /f "delims=" %%d in (空目录列表.txt) do (md "%%d"&echo,%%d 》空目录) 2>nul
- pause&exit/b
复制代码
|