如何在 Windows 中仅将文件名和大小转储到文本文件



我使用以下命令:

for %F in (*) do @echo %F %~zF

为了仅创建文件名和大小的列表。输出如下所示:

a.txt  21
b.txt  72
3.txt  73

现在我的问题是如何将其转储到文件中?我试图在命令末尾添加> filename.txt,但它只将最后一个条目转储到文件中。

这个问题:

for %F in (*) do @echo %F %~zF> filename.txt

。是 cmd 解释器将重定向视为 @echo 语句的一部分,而不是for的一部分。 您可以使用>>在每个循环迭代中追加,但这效率低下。 这实质上是在每次循环迭代时打开、追加和关闭文件。

更好的解决方案是仅打开一次输出文件进行写入,并保持打开状态,直到完成循环。 您可以通过将循环括在括号中来将重定向应用于外部循环。

> filename.txt (
    for %F in (*) do @echo %F %~zF
)

> filename.txt (for %F in (*) do @echo %F %~zF)

。无论您喜欢哪个。

这样做:

>> filename.txt  

有关命令行重定向的详细信息:
https://ss64.com/nt/syntax-redirection.html

命令>文件名 将命令输出重定向到文件

命令>>文件名追加到文件中

最新更新