2017-06-05 61 views
0

我想輸出文件cat.txt的內容,並使用FOR/F循環將其保存在另一個文本文件中(在標準cmd shell的一行命令中)。如何在一行命令中正確處理FOR循環中的重定向?

例如,這裏是源文件。

# 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
>copy-cat.txt (FOR /F "delims=" %G in (cat.txt) DO @echo %G) 
  • 相反重定向每條輸出線的,重定向滿for輸出
  • 爲了避免echo命令本身的夾雜物,使用前綴@命令不呼應echo(單個命令echo off
相關問題