2016-11-15 73 views
1

我试图循环遍历目录中的所有子目录,并将其名称回显到文本文件,然后为每个这些子目录中的每个文件回显文件名和扩展到相同的文本文件。到目前为止,我已经在我的.bat文件如下:Windows 10命令行嵌套在目录内容

@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

为什么不直接使用'tree'? – rojo

+0

这个的最终目的是为我生成代码。我正在使用的目录有几个文件夹,每个文件夹都有很多图像。我想使用该脚本生成代码来构建包含所有文件的对象,而不必手动捕获所有信息。 – Iyashu5040

+0

几个星期前回答了类似的问题。 http://stackoverflow.com/a/40225913/1417694 – Squashman

回答

3

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

@echo off & setlocal 

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

谢谢!似乎我只是错过了如何正确设置内循环的“in”。 – Iyashu5040