[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 14# ww0000


  
  1. @echo off
  2. (for /f "delims=" %%a in ('dir /b/s/ad^|sort /r') do (
  3.   dir /b "%%a"|findstr .>nul|| echo %%a
  4. ))>Out.txt
  5. pause
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 16# 77七

谢谢帮助!!

TOP

本帖最后由 aloha20200628 于 2024-8-30 20:40 编辑


批量检查子目录是否为空,又是一个老话题,看了一大把中外老帖,句式版本繁杂,最后简化为两点:
一。用 dir /b/a 方法检测比较可靠,但遭遇大数据目录会明显降速,老帖中一个速度略快的版本如下
  1. for /r /d %%F in (*) do dir /b/a "%%F" | find /v "" >nul || echo,%%~fF
复制代码
还有一个powershell版本,但速度比2楼代码还慢
  1. powershell -c "gci -dir -r | ? {[io.directory]::getfilesystementries($_.fullname).count -eq 0} | %% {$_.fullname}"
复制代码
二。用 rd+md 连环方法会明显提速,但在同一 for 循环内执行,表现有点‘奇葩’,即 rd 的返回值失稳,会影响其后的 && || 判断以及 exist 状态;有时还会出现后续 md 丢步的结果...

     因为看上了方法二的速度优势,反复调试出一个版本,主要是采用 rd 和 md 分用两个 for 循环各自完成的方案,其可靠性明显改善,在此分享仅供参考...
  1. @echo off
  2. (for /f "delims=" %%d in ('dir /s/b/ad^|sort /r') do rd "%%d"&&echo,%%d)>"空目录列表.txt" 2>nul
  3. for /f "delims=" %%d in (空目录列表.txt) do (md "%%d"&echo,%%d 》空目录) 2>nul
  4. pause&exit/b
复制代码
1

评分人数

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

TOP

返回列表