2012-05-30 64 views
9

在Unix上我會做這樣的事情:如何將標準輸入重定向到Windows命令行中的文件?

cat > file.txt 

我怎樣才能做到這一點在Windows命令提示符或批處理文件?

編輯:基本上,我正在尋找的cat不帶參數(從標準輸入讀取和吐回了到標準輸出)功能。

+1

'type thisfile> output.txt'將所有輸出與unix cat'輸入thisfile >> output.txt'將所有輸出附加到文件中,而不會覆蓋 – Kyle

+0

+1,因爲使用'type'這樣一個很酷且簡單的解決方案。 –

+0

@DominicP除了它不適合我的目的(在「編輯:」之後閱讀) – Matt

回答

16

TYPE CON

CON爲控制檯輸入的MS-DOS設備。您可以重定向到一個文件,如下所示:

TYPE CON>output.txt

要終止,打按Ctrl + ç按Ctrl + ž輸入按Ctrl + ž = EOF)。

+0

過了一年太晚了,但最後還是一個非解決方法的答案!謝謝! – Matt

+1

啊哈哈!雖然我猜...對於其他人可能是有用的......我可能是我這個年齡段唯一知道將MS-DOS變成打字機的優雅'TYPE CON> LPT1'快捷鍵的人! –

+1

很多* nix命令的Windows替代品確實存在 - 但它們是「進化的」,而不是像bash那樣智能地設計,所以它們有點難以找到,並且使用起來往往要複雜得多。這種差異的例子是bash backtick與DOS中等價的'FOR'構造。感謝天堂的Powershell和C#腳本! –

0

標準輸入:

批處理文件:

:: set /p MyVar= Prompts user for stdin information 

set /p MyVar= 

echo %MyVar% > filename 
+0

這將不得不首先閱讀標準輸入的整體,但是,不是嗎?如果stdin非常大,這似乎是不切實際的。 – Matt

8

如果你想要的是讀取標準輸入,寫你讀到stdout,然後將FINDSTR工作。

findstr "^" 

您可以通過重定向或管道提供stdin。

FINDSTR "^"與cat非常相似,因爲它會在不修改的情況下輸出確切的二進制輸入。

如果指定單個輸入文件也與cat相同。

findstr "^" fileName 

再次輸出將是一個確切的二進制副本。

如果指定了多個輸入文件,則功能發散,因爲在這種情況下,文件的名稱將用作每行輸出的前綴。

它也不同於貓,它不能從標準輸入和命名文件中讀取。

編輯
注意FINDSTR將追加結束線條標記<CR><LF>到管道輸入如果輸入流的最後一個字符不是<LF>。這是FINDSTR的功能,而不是Windows管道機制。 FINDSTR不會附加<CR><LF>重定向輸入。如果讀取重定向輸入並且最後一行不以<LF>結尾,則FINDSTR將無限期地掛在XP和Windows 7上。有關更多信息,請參見What are the undocumented features and limitations of the Windows FINDSTR command?

+0

編輯 - 更正了關於附加了CR/LF的管道輸入的信息。增加了關於XP和Windows 7的信息,可能與重定向輸入掛起 – dbenham

+0

謝謝你的回答!對於那裏的其他人來說,寫入(附加)stdin到文件「foo.txt」的批處理文件是: findstr「^」>> foo.txt –

4

我認爲more.exe可能是你在找什麼。

它既可以從控制檯接受輸入:

more > file1.txt 

或者從另一個文件中的管道,其中TYPE CON手柄:

type file1.txt | more > file2.txt 

more似乎追加一個換行符到你的文件並擴展選項卡,所以不要在二進制數據上使用它!)

+0

其實這個幫了我多條線的時候。謝謝 – TheGameiswar

相關問題