获取包含至少一个文件的文件夹列表

问题描述

有一个目录结构,我需要从中列出所有文件夹,其中至少包含一个文件。因此,当文件夹仅包含子文件夹时,不应列出该文件夹。 我尝试执行以下命令,但是两者都列出了没有任何文件的目录。

dir /s /b /o:n /ad > f.txt

for /r %a in (.) do @if exist "%~fa\*.*" echo %~fa >> f2.txt

更新: 我也尝试了以下命令:

for /r /d %a in (.) do @(dir /s /b /a-d "%a\*" >nul 2>&1 && echo %~fa)

文件夹结构:

C:.
└───T1
    ├───T2
    └───T3
            test.txt

命令输出:

C:\_privat\teszt
C:\_privat\teszt\T1
C:\_privat\teszt\T1\T3

预期输出:

C:\_privat\teszt\T1\T3

解决方法

使用for开关/D仅处理文件夹(这样可以更快)。使用dir /s /a-d仅列出该文件夹及其下方的文件。跳过输出(我们不需要),并根据成功(未找到文件)或失败(至少找到一个文件)回显。

这是一个通用代码(以显示所有可能性),只需删除不需要的部分即可:

for /r /d %a in (.) do @(dir /s /b /a-d "%a\*" >nul 2>&1 && echo + %~fa || echo - %~fa)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...