Tim*_*mMe 9 windows cmd io-redirection
我试图在Windows命令提示符下运行以下命令.
abc.exe >log.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
我期望所有输出abc.exe都被定向到log.txt,但它不起作用,因为它log.txt是空的.
但是,如果我只是执行abc.exe,则输出将显示在Windows命令提示符中.
我不确定这个应用程序使用的输出处理程序是什么(STDOUT或STDERR),但我想知道是否有一种方法可以捕获所有消息,而不管处理程序如何.
附录:从Windows 10 v1809开始,Windows终于支持pseudoconsoles了。如果可用,这将提供比使用旧版控制台 API 更好的解决方案。
如果您确实需要捕获该消息,请使用控制台 API。
CreateConsoleScreenBuffer并SetConsoleActiveScreenBuffer允许您切换到专用屏幕缓冲区以避免干扰现有屏幕缓冲区。
SetConsoleScreenBufferSize可以使缓冲区足够宽以避免线路翻转。
SetConsoleCursorPosition可以根据需要设置光标位置。
运行程序后,ReadConsoleOutput允许您读取它写入控制台的内容。
然后,您可以使用GetStdHandle(STD_OUTPUT_HANDLE)和SetConsoleActiveScreenBuffer将控制台返回到原始缓冲区,并CloseHandle关闭额外的缓冲区。