簡體   English   中英

無法在Windows命令提示符(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

CreateConsoleScreenBufferSetConsoleActiveScreenBuffer允許您切換到專用的屏幕緩沖區,以避免干擾現有的屏幕緩沖區。

SetConsoleScreenBufferSize可以使緩沖區足夠寬,以避免行翻轉。

SetConsoleCursorPosition可以根據需要設置光標位置。

運行該程序后, ReadConsoleOutput允許您讀取它寫入控制台的內容。

然后,您可以使用GetStdHandle(STD_OUTPUT_HANDLE)SetConsoleActiveScreenBuffer將控制台返回到原始緩沖區,並使用CloseHandle關閉額外的緩沖區。

控制台輸出重定向到文件時不可見的症狀可能是由於寫入標准輸出的程序中缺少flush()造成的。 但是,當程序退出(正常)或相應的緩沖區填滿並自動刷新時,輸出應該可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM