![](/img/trans.png)
[英]Piping output of a failed command in windows command prompt (cmd.exe)
[英]unable to redirect output message in windows command prompt (cmd.exe)
我試圖在Windows命令提示符下運行以下命令。
abc.exe >log.txt 2>&1
我希望abc.exe
所有輸出都定向到log.txt
,但由於log.txt
為空,因此它不起作用。
但是,如果我只執行abc.exe
,則輸出將顯示在Windows命令提示符下。
我不確定此應用程序使用的輸出處理程序是什么(STDOUT或STDERR),但是我想知道是否有一種方法可以捕獲所有消息,而與處理程序無關。
附錄:從Windows 10 v1809開始,Windows 最終支持偽控制台。 如果有的話,這提供了比使用舊版控制台API更好的解決方案。
如果您確實需要捕獲該消息,請使用控制台API 。
CreateConsoleScreenBuffer
和SetConsoleActiveScreenBuffer
允許您切換到專用的屏幕緩沖區,以避免干擾現有的屏幕緩沖區。
SetConsoleScreenBufferSize
可以使緩沖區足夠寬,以避免行翻轉。
SetConsoleCursorPosition
可以根據需要設置光標位置。
運行該程序后, ReadConsoleOutput
允許您讀取它寫入控制台的內容。
然后,您可以使用GetStdHandle(STD_OUTPUT_HANDLE)
和SetConsoleActiveScreenBuffer
將控制台返回到原始緩沖區,並使用CloseHandle
關閉額外的緩沖區。
控制台輸出重定向到文件時不可見的症狀可能是由於寫入標准輸出的程序中缺少flush()
造成的。 但是,當程序退出(正常)或相應的緩沖區填滿並自動刷新時,輸出應該可見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.