批处理文件列出一个文件夹中一级子文件夹的方法

22

我已经进行了搜索,但没有找到答案,如果答案存在,那么请见谅。

我对批处理文件不是特别擅长,请牢记这一点。

我只需要一个单独的批处理文件,它将列出/保存当前文件夹中的文件夹列表。

所以,基本上,如果我在某个文件夹中运行此批处理文件,则它将输出该文件夹中所有文件夹(而不是文件或子文件夹,仅限于一级)。

我认为这可能是一个简单的请求,但是我在Google等搜索引擎上没有找到任何有用的答案。

3个回答

64

目录

使用 dir 命令。输入 dir /? 以获取帮助和选项。

dir /a:d /b

重定向

然后使用重定向将列表保存到文件中。

> list.txt

共同

dir /a:d /b > list.txt

这将仅输出目录的名称。如果您想要目录的完整路径,请使用下面的内容。


完整路径

for /f "delims=" %%D in ('dir /a:d /b') do echo %%~fD

替代方法

另一种方法是只用for命令。查看for /?以获取帮助和选项。这可以输出仅名称%%~nxD或完整路径%%~fD

for /d %%D in (*) do echo %%~fD

注意事项

要在命令行直接使用这些命令,请将双百分号改为单个百分号。即将%%改为%

要重定向for方法,只需在echo语句后添加重定向即可。在此处使用双箭头>>重定向以附加到文件中,否则由于覆盖所有其他语句,只会将最后一个语句写入文件。

... echo %%~fD>> list.txt

好的,我有以下内容:for /D %%A IN (*) DO echo %%A>> output.txt 但结果似乎是按日期顺序排列的。如何按名称排序。谢谢,Jonny - Jonny
不幸的是,要轻松排序结果,您需要使用“dir”命令。唯一的其他选项是使用“sort”命令。将“/o:n”参数添加到“dir”命令中。有关所有选项,请参见“dir /?”。以下是更新后的两个“dir”命令。“dir /a:d /b /o:n > output.txt”或“for /f“delims =” %%D in ('dir /a:d /b /o:n') do echo %%~fD>> output.txt”。 - David Ruhmann

2

打印出批处理文件所在的所有文件夹名称

SETLOCAL EnableDelayedExpansion

for /d %%d in (*.*) do (
    set test=%%d
    echo !test!
)
pause

1

我尝试使用此命令显示目录中的文件列表。

dir /s /b > List.txt

在文件中,它显示了以下列表。

C:\Program Files (x86)\Cisco Systems\Cisco Jabber\XmppMgr.dll

C:\Program Files (x86)\Cisco Systems\Cisco Jabber\XmppSDK.dll

C:\Program Files (x86)\Cisco Systems\Cisco Jabber\accessories\Plantronics

C:\Program Files (x86)\Cisco Systems\Cisco Jabber\accessories\SennheiserJabberPlugin.dll

C:\Program Files (x86)\Cisco Systems\Cisco Jabber\accessories\Logitech\LogiUCPluginForCisco

C:\Program Files (x86)\Cisco Systems\Cisco Jabber\accessories\Logitech\LogiUCPluginForCisco\lucpcisco.dll

我想要做的只是显示子目录而不是完整的目录路径。

像这样:

Cisco Jabber\XmppMgr.dll Cisco Jabber\XmppSDK.dll Cisco Jabber\accessories\JabraJabberPlugin.dll Cisco Jabber\accessories\Logitech Cisco Jabber\accessories\Plantronics Cisco Jabber\accessories\SennheiserJabberPlugin.dll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接