【问题标题】:How do I list all files within a set list of subdirectories in the main directory?如何列出主目录中一组子目录中的所有文件?
【发布时间】:2014-07-28 21:13:45
【问题描述】:

例如:列出带有“121”的子目录中的所有文件。在子目录名称中。

这段代码:

@echo off
for /d %%a in (*121.*) do echo %%a >> get_dirs.txt

将输出我正在寻找的文件夹,但是一旦设置好,我希望只查看“get_dirs.txt”文件列表以从该列表中的目录中获取文件。我到处搜索,只能找到如何列出每个子目录中的所有文件,但如果文件超过 10,000 个,这个过程可能会变慢。

提前致谢。如果我只能有 1 个输出文件,那将是一个奖励。

【问题讨论】:

  • 为什么不dir /s *\*121*.* > get_dirs.txt?不需要 for 循环。
  • 我收到以下错误:“文件名、目录名或卷标语法不正确。”

标签: list file batch-file cmd directory


【解决方案1】:
@echo off
  (for /r /d %%a in (*121*) do for %%b in ("%%~fa\*") do echo "%%~fb")>output.txt

对于名称中包含 121 的每个文件夹,对于该文件夹中的每个文件,回显文件的完整路径

【讨论】:

  • 这正是我的意图,那么我将如何将它写成文本文件输出?
  • 它只是不适合我。生成了一个文件,但是没有任何内容写入该文件,尽管我知道该文件夹中有文件。
  • @BillyD,对不起,我的错。现在更正(b 应该是a)并添加了重定向代码。
  • 太棒了!!非常感谢!如果我想要不带引号的输出,那么我只需将 "%%~fb" 替换为 %%~fb (不带引号)。这为我解决了。谢谢!
【解决方案2】:
@echo off
for /f "delims=" %%h in ('for /d %%a in (*121.*^) do @echo %%a') do dir %%h

应该给你你的目录列表。


如果有一个名称包含 121. 的空目录,您会收到该错误

这应该可以解决它:

@echo off
for /f "delims=" %%h in ('for /d %%a in (*121.*^) do @echo %%a') do IF EXIST "%%h\*" dir %%h

注意for /d...echo 之前的@ - 确保for/d 的输出只包含必需的行,而不是提示...

【讨论】:

  • 感谢您的快速响应,但是我收到“未找到文件”错误。我想获取具有“121”的目录中的文件。在名称中找到的字符串。
  • 肯定有一个名称为121的目录,里面有文件,但是却出现“找不到文件”。另外,我希望文本文件输出仅包含单个文件的完整路径,而不是其中的卷信息。感谢您花时间在这方面。
猜你喜欢
  • 2012-09-02
  • 2014-03-08
  • 2012-11-14
  • 2011-11-09
  • 1970-01-01
  • 2016-01-16
  • 2011-03-01
相关资源
最近更新 更多