您如何正确处理一条命令行中的重定向以进行循环



我想输出文件cat.txt的内容,然后使用/f loop(在标准CMD shell的一行中保存它们。(

例如,这是源文件。

# content of cat.txt:
meow
meo
me
m

使用此命令后,我有一些意外结果:

FOR /F "tokens=*" %G in (cat.txt) DO echo %G > D:copy-cat.txt

# I got output:
meow > D:copy-cat.txt
meo > D:copy-cat.txt
me > D:copy-cat.txt
m > D:copy-cat.txt

我理解在这种情况下,重定向受Echo的影响,因此被认为是字符串并回声。

问题:如何将代码分开,以便我可以将所有写入stdout的内容重定向到d: copy-cat.txt?

注意:正如您可以通过%g看到的那样,我需要直接在命令行中,而不是在批处理脚本中编写。

>copy-cat.txt (FOR /F "delims=" %G in (cat.txt) DO @echo %G)
  • 而不是重定向每个输出线,而是重定向完整的for输出
  • 要避免包含echo命令本身,请使用 @的命令前缀不呼应echo(单命令echo off(

最新更新