繁体   English   中英

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

[英]How do you correctly handle redirection in FOR loop in one line of command?

我想输出文件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所示,我需要直接在命令行中而不是在批处理脚本中编写此代码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM