2013-11-04 227 views
1

相當簡單的問題,但我似乎無法找到答案。將輸出重定向到控制檯

什麼是C#相當於在Windows批處理腳本中做echo "foo" > CON

請注意,我必須具體輸出到控制檯流(CON)。在撥打電話Process.Start()時,我找到了很多答案來解決如何重定向問題,但我的程序已啓動,並且STDOUT被重定向到我的控制範圍之外。

+0

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682075(v=vs.85).aspx可能有幫助,用'Console.SetOut()'和一些P/Invoke。 – SLaks

+0

[AttachConole](http://msdn.microsoft.com/en-us/library/windows/desktop/ms681952(v = vs.85).aspx)? –

+0

我只是覺得這很難找到答案。它在shell腳本中很「微不足道」,所以感覺就像在一個更強大的語言中它應該幾乎一樣容易......一個P/Invoke可能會這樣做,但這就像試圖在一個小釘子上使用大錘。 – Bobson

回答

0

可以使用Console.SetOut方法到標準輸出復位到Console.Out

+3

否; 'Console.Out'是重定向的流。 – SLaks

+0

您是否可以將原始流保存到控制檯,如以下答案:http://stackoverflow.com/a/6024185/2089233?或者在你可以做任何事情之前將stdout重定向? – foolmoron

+0

它在調用實用程序啓動之前/進程啓動時被重定向,這很不幸在我的控制之外。 – Bobson

0

您可以嘗試使用Console.OpenStandardOutput打開標準輸出流,包裹在一個TextWriter,然後用Console.SetOut重置。

+0

這不就是得到現有的'STDOUT'嗎? – Bobson

+0

@Bobson文檔說它允許重新獲取標準輸出流。我不確定這是否允許您「撤消」發生在應用程序之外的重定向。標準輸出重定向可能完全不受控制(至少在沒有P /調用某些Win32函數的情況下,但我對此並不熟悉)。 – Kyle

+0

剛剛嘗試過。沒有得到任何輸出。儘管如此,感謝您的幫助。 – Bobson

相關問題