【问题标题】:Get all folders which contain files using Batch command使用批处理命令获取所有包含文件的文件夹
【发布时间】:2018-03-13 16:00:08
【问题描述】:

大家好!我有一个包含数百万个文件、目录和子目录的父文件夹。我想知道所有包含文件的文件夹并在文本文件中生成所有这些文件夹名称。 我试过玩下面的批处理命令

dir /A:-D /b /s > files.txt

输出

temp/user/clientA/XML/ITCJXQ 1001111/1001111.xml
temp/user/clientA/XML/ITCJXQ 1001111/1001111.pdf
temp/user/clientA/XML/ITCJXQ 1001111/1001111.html
temp/user/clientA/XML/ITCJXQ 1002345/1002345.xml
temp/user/clientA/XML/ITCJXQ 1002345/1002345.pdf
temp/user/clientA/XML/ITCJXQ 1002345/1002345.html

我期望看到的是

temp/user/clientA/XML/ITCJXQ 1001111/
temp/user/clientA/XML/ITCJXQ 1002345/

【问题讨论】:

  • 欢迎来到Stack Overflow!这个问题是关于如何使用 Windows/cmd/DOS,所以它属于我们的姊妹站点,Super User。请阅读their tour,并了解如何使用问题编辑器中的代码格式化按钮。谢谢!
  • @jpaugh,我不同意它属于超级用户。这是进入批处理文件的代码,这使它成为一个编程问题。
  • 我从未见过带有正斜杠的DIR 命令输出。想知道您是如何获得该输出的。
  • 不过,作为第一步,/A:-D 是错误的(请参阅DIR /? 的输出以获取帮助)。该命令是/AD(仅用于目录)或/A-D(仅用于文件)。但是,第一种形式列出了 all 目录,而不仅仅是那些包含文件的目录。查看FOR /? -- 特别是FOR /R 遍历目录树 -- 然后您可以在其中测试文件是否存在。
  • @TripeHound,/A:-D(或/A:D)的形式没有错,冒号只是可选的...

标签: batch-file cmd


【解决方案1】:

我从我在一天结束时使用的一些代码中获取了这个,以检查我的所有自动化文件夹是否不为空。本质上 FOR 命令是获取目录列表。在 for 命令中执行的命令会检查文件夹中是否有文件。

@echo off
FOR /F "delims=" %%G IN ('dir /ad /b /s') DO (
    >nul 2>nul dir /a-d /b "%%~G\*" && echo %%G>>"FolderNotEmpty.txt"
)

【讨论】:

    猜你喜欢
    • 2016-01-30
    • 2011-03-02
    • 2011-12-02
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多