如果我使用start命令从cmd提示符创建进程(打开一个新的cmd),是否可以将stdout和stderr从该进程重定向回调用cmd?
如果希望STARTed进程的输出显示在父命令控制台中,则只需使用 START /B 选项 .
START /B
如果要处理命令的输出,则应使用 FOR /F ... in ('someCommand') DO ... .
FOR /F ... in ('someCommand') DO ...
好 . 我还没有找到这个问题的直截了当的答案 . 我不想用我认为不必要的细节来掩盖我的问题,但看到我因为缺乏这个而受到批评,我会在这里扩展一下 .
我想在我们的 生产环境 线上自动更新FW,所以我有一个python应用程序从ftp获取FW,然后使用处理器flash工具通过python subprocess命令将其上传到主板的flash . 除了其中一个工具外,所有工具都可以 .
当一个工具没有在自己的终端中运行时,它似乎有一个问题,所以我提供了一个子进程命令字符串的开始,它允许它在自己的终端中运行OK . 但是,出于记录原因,我需要来自其他终端的输出 .
一个可能的解决方案是使用>>或wintee将stdout和stderr记录到文件,然后通过我原始应用程序中的一个线程轮询该文件(可能是一个相当复杂的问题解决方案) . 但是,该工具还有一个单独的问题,它不喜欢任何std重定向,所以这对我不起作用 .
2 回答
如果希望STARTed进程的输出显示在父命令控制台中,则只需使用
START /B
选项 .如果要处理命令的输出,则应使用
FOR /F ... in ('someCommand') DO ...
.好 . 我还没有找到这个问题的直截了当的答案 . 我不想用我认为不必要的细节来掩盖我的问题,但看到我因为缺乏这个而受到批评,我会在这里扩展一下 .
我想在我们的 生产环境 线上自动更新FW,所以我有一个python应用程序从ftp获取FW,然后使用处理器flash工具通过python subprocess命令将其上传到主板的flash . 除了其中一个工具外,所有工具都可以 .
当一个工具没有在自己的终端中运行时,它似乎有一个问题,所以我提供了一个子进程命令字符串的开始,它允许它在自己的终端中运行OK . 但是,出于记录原因,我需要来自其他终端的输出 .
一个可能的解决方案是使用>>或wintee将stdout和stderr记录到文件,然后通过我原始应用程序中的一个线程轮询该文件(可能是一个相当复杂的问题解决方案) . 但是,该工具还有一个单独的问题,它不喜欢任何std重定向,所以这对我不起作用 .