在Unix上我會做這樣的事情:如何將標準輸入重定向到Windows命令行中的文件?
cat > file.txt
我怎樣才能做到這一點在Windows命令提示符或批處理文件?
編輯:基本上,我正在尋找的cat
不帶參數(從標準輸入讀取和吐回了到標準輸出)功能。
在Unix上我會做這樣的事情:如何將標準輸入重定向到Windows命令行中的文件?
cat > file.txt
我怎樣才能做到這一點在Windows命令提示符或批處理文件?
編輯:基本上,我正在尋找的cat
不帶參數(從標準輸入讀取和吐回了到標準輸出)功能。
TYPE CON
CON爲控制檯輸入的MS-DOS設備。您可以重定向到一個文件,如下所示:
TYPE CON>output.txt
要終止,打按Ctrl + ç或按Ctrl + ž,輸入(按Ctrl + ž = EOF)。
過了一年太晚了,但最後還是一個非解決方法的答案!謝謝! – Matt
啊哈哈!雖然我猜...對於其他人可能是有用的......我可能是我這個年齡段唯一知道將MS-DOS變成打字機的優雅'TYPE CON> LPT1'快捷鍵的人! –
很多* nix命令的Windows替代品確實存在 - 但它們是「進化的」,而不是像bash那樣智能地設計,所以它們有點難以找到,並且使用起來往往要複雜得多。這種差異的例子是bash backtick與DOS中等價的'FOR'構造。感謝天堂的Powershell和C#腳本! –
標準輸入:
批處理文件:
:: set /p MyVar= Prompts user for stdin information
set /p MyVar=
echo %MyVar% > filename
這將不得不首先閱讀標準輸入的整體,但是,不是嗎?如果stdin非常大,這似乎是不切實際的。 – Matt
如果你想要的是讀取標準輸入,寫你讀到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?。
編輯 - 更正了關於附加了CR/LF的管道輸入的信息。增加了關於XP和Windows 7的信息,可能與重定向輸入掛起 – dbenham
謝謝你的回答!對於那裏的其他人來說,寫入(附加)stdin到文件「foo.txt」的批處理文件是: findstr「^」>> foo.txt –
我認爲more.exe
可能是你在找什麼。
它既可以從控制檯接受輸入:
more > file1.txt
或者從另一個文件中的管道,其中TYPE CON
不手柄:
type file1.txt | more > file2.txt
(more
似乎追加一個換行符到你的文件並擴展選項卡,所以不要在二進制數據上使用它!)
其實這個幫了我多條線的時候。謝謝 – TheGameiswar
'type thisfile> output.txt'將所有輸出與unix cat'輸入thisfile >> output.txt'將所有輸出附加到文件中,而不會覆蓋 – Kyle
+1,因爲使用'type'這樣一個很酷且簡單的解決方案。 –
@DominicP除了它不適合我的目的(在「編輯:」之後閱讀) – Matt