首页 > 解决方案 > 获取至少包含一个文件的文件夹列表

问题描述

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

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

标签: windowscmdcommand-promptdirectory-structure

解决方案


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

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

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

推荐阅读