Windows 10命令行嵌套用于过目录内容

时间:2016-11-15 13:06:49

标签: loops batch-file directory

我正在尝试遍历目录中的所有子目录并将其名称回显到文本文件,然后对于每个子目录中的每个文件,将文件名和扩展名回显到同一文本文件。到目前为止,我的.bat文件中包含以下内容:

@echo off
for /D %%d in (*) do (echo %%d >> test.txt
 for /r %%i in (%%d) do echo %%~nxi >> test.txt)

独立

for /D %%d in (*) do (echo %%d >> test.txt

for /r %%i in (*) do echo %%~nxi >> test.txt)

用于输出*中的子目录或文件的名称,但是当我将它们组合起来时,我只是在文本文件中重复了很多次子目录的名称。

我在这个嵌套循环中做错了什么?如何修复它以输出我需要的内容?

所需输出的示例:

Directory1
File1.txt
File2.txt
File3.txt
Directory2
Filex.jpg
Filey.jpg

1 个答案:

答案 0 :(得分:3)

如果你只需要一个深度,那就不要使用for /r。那个递归。相反,这样做:

@echo off & setlocal

>test.txt (
    for /d %%D in (*) do (
        echo %%~D
        for %%I in ("%%~D\*") do echo %%~nxI
    )
)