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

Windows 获取至少包含一个文件的文件夹列表,windows,cmd,command-prompt,directory-structure,Windows,Cmd,Command Prompt,Directory Structure,有一个目录结构,我需要从中列出所有文件夹,其中至少包含一个文件。因此,当文件夹仅包含子文件夹时,不应将其列出。 我尝试了以下命令,但它们都列出了没有任何文件的目录 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 "

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

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)

包含非空子文件夹的文件夹如何?它不包含文件,只包含文件夹,但其中一个或多个子文件夹可能包含文件。根据你的描述,它不应该被列出。是吗?@Stephan:不,那也应该列出来。之后,这些路径将作为文件处理应用程序的输入。谢谢,你提到了这个案子!谢谢,但是它的输出几乎和我之前得到的一样,不管怎样,我都会改变它的一部分。仅包含子文件夹的文件夹显示在输出中。输出非常不同。您注意到输出中的
-
+
?只需删除您不需要的
echo
部分即可。(当我正确理解您的问题时,请从另一个echo中删除
| echo-%~fa
+
)。我看到并尝试了它,但该列表也包含没有任何文件的文件夹。这对我不适用。你能给我看看吗?(将您的输出编辑到我的答案或您的问题中(也可能是
树/f
的输出)-在注释中无法读取)