找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: youxi01

[文件操作] 批处理检测某盘符下所有的空文件夹

[复制链接]
发表于 2024-8-29 19:08:33 | 显示全部楼层
回复 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技术 +1 收起 理由
ww0000 + 1 谢谢!!

查看全部评分

发表于 2024-8-30 09:02:02 | 显示全部楼层
回复 16# 77七

谢谢帮助!!
发表于 2024-8-30 20:26:00 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
77七 + 1 感谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 19:40 , Processed in 0.027274 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表