【发布时间】:2015-12-02 04:12:42
【问题描述】:
我正在尝试编写一个简单的批处理文件,该文件将列出批处理文件所在特定文件夹的以“@”开头的子文件夹,按修改日期对这些文件进行排序,并告诉我每个文件中的文件数子文件夹。这是我的代码,除了它总是将文件数输出为“0”,这是不正确的:
FOR /F "tokens=* delims= " %%D IN ('DIR *.* /-P /O:G-DE ^| FIND "@"') DO (
FOR /F %%K IN ('DIR "%%D" 2^>NUL ^| FIND "File(s)" ^|^| ECHO 0') DO (
ECHO %%D %%K>>Test1.txt
)
)
当我做一个测试批处理文件只是为了输出子文件夹中的文件数时,它可以工作(虽然它也给出了文件夹中的文件数和文件总数,但至少我得到了每个子文件夹的文件数):
FOR /F %%K IN ('DIR /S ^| FIND "File(s)"') DO ECHO %%K >>Test2.txt
当我将这两位代码组合起来简单地给我子文件夹的名称 + 文件数(每个子文件夹一行)时,我似乎无法让它工作。任何帮助将不胜感激!
谢谢!
【问题讨论】:
-
从你的初始代码中去掉
ECHO 0。 -
感谢@SomethingDark 的回复!当我从代码中仅删除“ECHO 0”时,批处理文件会运行但不会创建输出文本文件。如果我删除 '^|^|' 也是一样也是。我只是错过了一些简单的东西吗?谢谢!
-
您的代码实际上不会返回以
@开头的文件夹,而是返回文件和 包含@的文件夹;得到你想要的使用dir /-P /A:-D /O:-DE "@*" and omit|找到“@”`... -
感谢@aschipfl 的评论!我尝试了您的修改,但它只给出了相关文件的部分列表,然后在我再试几次后它就停止了工作。我的版本总是只给出“@”子文件夹;所以这部分代码工作正常。我只需要它还列出输出文本文件中每个“@”子文件夹的文件数。
-
糟糕,我打错字了——应该是
dir /-P /A:D /O:-DE "@*"(我之前打错了/A:-D),对不起!
标签: batch-file text output