记录由另一个窗口打开的cmd窗口的输出

时间:2019-11-28 13:32:54

标签: batch-file cmd

我正在尝试从cmd窗口记录输出。我正在运行一个bat文件,它正在生成一些输出,我想记录它们。

例如,我正在从cmd运行“ test.bat”文件。这将打开另一个cmd窗口,输出将显示在该窗口中。我想记录第二个窗口的输出。

如果我编写test.bat> result.log,它将仅记录第一个cmd窗口中的终止消息。

任何帮助或提示将不胜感激。

这些是我试图从cmd运行的批处理文件(例如test.bat)的内容

start CPU.bat
timeout /t 10
taskkill /IM api_test.exe /F

CPU.bat的内容是

.\api_test.exe cpu -m "name_of_some_model_to_be_tested"

1 个答案:

答案 0 :(得分:0)

简单的解决方案是用作第一个命令行:

start "CPU" %ComSpec% /C ""%~dp0CPU.bat" >"%UserProfile%\Desktop\CPU_Output.log" 2>&1"

此命令行使用选项/C启动另一个Windows命令行过程,以在指定命令行执行完成后关闭此命令进程。打开的控制台窗口的标题为CPU

已启动的Windows命令进程将执行批处理文件CPU.bat,该文件位于该批处理文件的目录中,该命令行包含完整的合格文件名。 %~dp0扩展到当前执行的批处理文件的完整路径,该路径始终以反斜杠结尾,因此仅与CPU.bat串联为该批处理文件的完整限定文件名。

CPU.bat的标准输出重定向到当前用户桌面目录中的文件CPU_Output.log中。错误输出将重定向到同一文件。

请阅读有关Using command redirection operators的Microsoft文章,以获取>2>&1的解释。

打开一个command prompt窗口,运行start /?并阅读有关此命令的输出帮助。下一步运行cmd /?,并再次阅读输出帮助,特别是有关Windows命令处理器如何解释选项/C/K之后指定的命令行的部分,这在这里非常重要。 >

但是使用此命令行作为第一个命令行完全不需要CPU.bat

start "CPU" %ComSpec% /C ""%~dp0api_test.exe" cpu -m "name_of_some_model_to_be_tested" >"%UserProfile%\Desktop\CPU_Output.log" 2>&1"