Process.StandardOutput.ReadToEnd()-输出为空.从cmd-output运行相同的应用程序

本文关键字:运行 cmd-output 应用程序 ReadToEnd StandardOutput 输出 Process | 更新日期: 2023-09-27 18:19:30

在使用IarBuild.exe实用程序(用于构建项目的IAR cmd实用程序)构建项目时,我正在尝试获取输出我使用的是一个简单的IronPython脚本:

    process = System.Diagnostics.Process()
    process.StartInfo.FileName = path_process
    process.StartInfo.Arguments = command_line_arguments
    process.StartInfo.RedirectStandardError = True
    process.StartInfo.RedirectStandardOutput = True
    process.StartInfo.RedirectStandardInput = True
    process.StartInfo.UseShellExecute = False
    process.StartInfo.CreateNoWindow = True
    process.Start()
    output = process.StandardOutput.ReadToEnd()
    process.WaitForExit()
    return {"Exit code": process.ExitCode, "Output": output}

在我的情况下,"Output"总是空的("StandardError"也是空的)。如果我尝试在命令行("cmd.exe")中执行相同的应用程序,则会成功显示输出。

也许这个问题与某些操作系统设置(或其他安装的应用程序所做的更改)有关,因为当我尝试在其他虚拟机(相同的操作系统)上执行相同的脚本时,Process.StandardOutput.ReadToEnd()是可以的。

当我使用"subprocess.call()"方法而不是"System.Diagnostics.Process()"时,我会得到相同的结果

Process.StandardOutput.ReadToEnd()-输出为空.从cmd-output运行相同的应用程序

当你传递参数时。看起来你传递了三个参数:

1) C:''test''test.ewp2) -生成调试3) -日志信息但它们被认为是6个自变量,因为它们包含空格。

使用

command_line_arguments = "'"C:''test''test.ewp'" '"-build Debug'" '"-log info'""

我可能错了。如需进一步参考,请参阅https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.arguments(v=vs.110).aspx