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

[文件操作] 求助批处理列出空目录和非空目录

[复制链接]
发表于 2025-9-15 21:06:14 | 显示全部楼层 |阅读模式
本帖最后由 单车少男 于 2025-9-21 18:27 编辑

举例
├─01方案                        非空目录
│  ├─01甲供图纸\a.DWG   非空目录
│  └─02现场勘察              空目录  
├─02报价                        空目录  
├─03招标                        空目录
├─04合同\ht.DOC            非空目录
│  ├─01入库                    空目录
│  └─02合同                    空目录
├─05施工                        空目录
│  ├─01入库                    空目录
│  └─02合同                    空目录


需求:
1、如果目录下只有空目录,也算空目录
2、我要输出,当前目录的完整路径
发表于 2025-9-15 22:46:42 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-9-15 22:48 编辑

回复 1# 单车少男

采用与目录树结构对应的列表格式输出处理结果...

  1. @echo off &for /f "delims=" %%d in ('dir /b/s/ad^|sort') do (
  2.    set "d=%%d" &setlocal enabledelayedexpansion
  3.    dir /b/a "!d!"|find /v "">nul 2>nul
  4.    if !errorlevel! neq 0 (echo,!d!        空目录) else (echo,!d!        非空目录)
  5.    endlocal )
  6. pause&exit/b
复制代码
发表于 2025-9-15 23:01:20 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-9-15 23:03 编辑

回复 1# 单车少男

再给一个用目录树格式输出处理结果的版本...

  1. @echo off &tree|more +3>#.$
  2. (for /f "delims=" %%d in ('dir /b/s/ad^|sort') do (
  3.    set "d=%%d" &set/p "p=" &setlocal enabledelayedexpansion
  4.    dir /b/a "!d!"|find /v "">nul 2>nul
  5.    if !errorlevel! neq 0 (echo,!p!        空目录) else (echo,!p!        非空目录)
  6.    endlocal ))<#.$
  7. del /q "#.$" &pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
77七 + 1 感谢分享

查看全部评分

 楼主| 发表于 2025-9-21 18:18:50 | 显示全部楼层
本帖最后由 单车少男 于 2025-9-21 18:27 编辑

回复 3# aloha20200628


我把需求重新描述一下

1、我需求,没描述清楚
2、如果目录下只有空目录,也算空目录
3、我要输出,当前目录的完整路径
发表于 2025-9-21 19:02:28 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-9-21 23:08 编辑

回复 4# 单车少男

借助 gnu 系列的 tree.exe (本坛第三方下载 http://bcn.bathome.net/s/tool/index.html?key=tree 落地即用,更名为 tree_gnu.exe 与批处脚本同目录)可免除目录树节点与目标目录的匹配,以便确保处理结果的可靠性和效率...

  1. @echo off &tree_gnu.exe -dfN --noreport|more +1>#.$
  2. echo,%cd%&for /f "tokens=1* delims=." %%a in (#.$) do (
  3.    set "p=%%b" &setlocal enabledelayedexpansion &set "p=.!p:/=\!"
  4.    dir /b/a "!p!"|find /v "">nul 2>nul
  5.    if !errorlevel! neq 0 (echo,%%a%cd%!p:~1!        空目录) else (echo,%%a%cd%!p:~1!        非空目录)
  6.    endlocal )
  7. del /q #.$ &pause&exit/b
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:06 , Processed in 0.019240 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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