【发布时间】:2009-09-28 14:02:33
【问题描述】:
我只想知道如何获取当前目录中所有文件夹的名称。例如,在我当前的目录中,我有三个文件夹:
堆栈溢出 红迪网 编码恐怖然后当我执行我的批处理脚本时,所有三个文件夹都会打印在屏幕上。
我怎样才能做到这一点?
【问题讨论】:
标签: windows batch-file
我只想知道如何获取当前目录中所有文件夹的名称。例如,在我当前的目录中,我有三个文件夹:
堆栈溢出 红迪网 编码恐怖然后当我执行我的批处理脚本时,所有三个文件夹都会打印在屏幕上。
我怎样才能做到这一点?
【问题讨论】:
标签: windows batch-file
使用批处理文件:
for /d %%d in (*.*) do echo %%d
如果您想在命令行上进行测试,请在两种情况下仅使用一个 % 符号。
【讨论】:
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
)
% - 这是用于批处理,如果您在命令行上使用,请使用单个%。【讨论】:
使用 PowerShell:
gci | ? { $_.PSIsContainer }
旧答案:
使用 PowerShell:
gci | ? {$_.Length -eq $null } | % { $_.Name }
您可以将结果用作脚本中的数组,然后通过它进行 foreach 或任何您想做的事情...
【讨论】:
gci | ?{$_.PSIsContainer} 实际上是规范的方式。
获取特定目录的所有子文件夹并在 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
【讨论】: