簡體   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