如何在一行命令中正确处理FOR循环中的重定向?

时间:2017-06-05 10:26:06

标签: windows cmd

我想输出文件cat.txt的内容并使用FOR / F循环将它们保存在另一个文本文件中(在标准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

据我所知,在这种情况下,重定向受到回声的影响,因此被识别为字符串并被回显。

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

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

1 个答案:

答案 0 :(得分:1)

>copy-cat.txt (FOR /F "delims=" %G in (cat.txt) DO @echo %G)
  • 不是重定向每个输出行,而是重定向完整的for输出
  • 为避免包含echo命令本身,请使用带@的命令前缀不回显echo(单个命令echo off
相关问题