如何获取批处理脚本中所有子文件夹的名称?

我只想知道如何获取当前目录中的所有文件夹的名称。 例如在我目前的目录中,我有三个文件夹:

堆栈溢出
书签交易
 codinghorror

然后,当我执行我的批处理脚本时,所有三个文件夹将打印在屏幕上。

我怎样才能做到这一点?

使用批处理文件:

for /d %%d in (*.*) do echo %%d 

如果您想在命令行上测试它,请在这两种情况下只使用一个%符号。

在Windows上,您可以使用:

 dir /ad /b 

/ad只会让你的目录
/b将以“裸”格式呈现

编辑(回复评论):

如果你想遍历这些目录,并使用它们,使用for命令:

 for /F "delims=" %%a in ('dir /ad /b') do ( echo %%a ) 
  • 注意双精度% – 这是为了在批处理中使用,如果您在命令行上使用,请使用单个%
  • 为了回应@ Helen的评论,增加了默认空间界限的重置

使用PowerShell:

 gci | ? { $_.PSIsContainer } 

老答案:

使用PowerShell:

 gci | ? {$_.Length -eq $null } | % { $_.Name } 

您可以在脚本中使用结果作为数组,然后通过foreach或任何你想做的事情…

获取特定目录的所有子文件夹并将其显示在CMD中:

 @echo off dir C:\input /s /b /o:n /a:d Pause&Exit 

获取特定目录的所有子文件夹并将其保存在文本文件中:

 dir C:\your_directory /s /b /o:n /a:d > output.txt