【问题标题】:Windows 10 Command Line nested for over directory contents嵌套目录内容的 Windows 10 命令行
【发布时间】:2016-11-15 13:06:48
【问题描述】:

我正在尝试遍历目录中的所有子目录并将其名称回显到文本文件,然后对于每个子目录中的每个文件,将文件名和扩展名回显到同一文本文件。到目前为止,我的 .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

【问题讨论】:

  • 为什么不直接使用tree
  • 这样做的最终目的是为我生成代码。我正在使用的目录有几个文件夹,每个文件夹都有很多图像。我想使用脚本生成代码来构建包含所有文件的对象,而不必手动捕获所有信息。
  • 几周前回答了一个类似的问题。 stackoverflow.com/a/40225913/1417694

标签: loops batch-file directory


【解决方案1】:

如果您只需要一层深度,请不要使用for /r。如此反复。相反,请这样做:

@echo off & setlocal

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

【讨论】:

  • 谢谢!似乎我只是想念如何为内循环正确设置“in”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 2013-06-11
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
相关资源
最近更新 更多