如何将弹出新窗口的工具exe程序输出重定向到文本文件
如何将弹出新窗口的工具exe程序输出重定向到文本文件
兄弟,我太懂你遇到的坑了——这种一运行就弹出独立窗口的工具exe,直接用 > 重定向为啥会出空文件?因为它们大多是GUI(图形界面)程序,和普通控制台程序的输出流逻辑不一样,默认不会把内容发送到你打开的PowerShell/CMD控制台里,所以直接抓肯定抓不到!
给你几个靠谱的解决办法,按顺序试就行:
首选:用PowerShell的Start-Process命令
这是最稳定的方案,PowerShell专门给这类GUI程序做了输出捕获的参数,命令如下:Start-Process -FilePath "utility.exe" -Wait -RedirectStandardOutput "textino.txt"给你拆解下参数:
-Wait:让PowerShell等你的工具完全运行结束再继续,保证输出能完整写入文件,不会半途中断-RedirectStandardOutput:直接把程序的标准输出定向到你指定的textino.txt里
如果你的工具还有错误提示需要记录,再加个错误输出重定向的参数就行:
Start-Process -FilePath "utility.exe" -Wait -RedirectStandardOutput "textino.txt" -RedirectStandardError "error_log.txt"如果上面的方法还是出空文件?
那可能你的工具本质是控制台程序,但被设置成强制新开窗口运行。这时候可以试试加上-NoNewWindow参数,让它在当前PowerShell窗口里运行,再捕获输出:Start-Process -FilePath "utility.exe" -NoNewWindow -Wait -RedirectStandardOutput "textino.txt"不过要注意,有些程序会强制自己新开窗口,这个参数可能会失效,不行就跳过这个方法。
要是你习惯用CMD操作?
可以试试start /wait命令,虽然稳定性不如PowerShell,但也能解决一部分情况:start /wait utility.exe > textino.txt 2>&1这里的
2>&1是把错误输出也一起写到同一个文件里,方便你排查问题。
备注:内容来源于stack exchange,提问作者srt243
相关产品推荐
相关产品推荐

