C#处理运行其他命令的bat文件的输出重定向

C#处理运行其他命令的bat文件的输出重定向,c#,C#,我正在尝试重定向以下BAT文件的输出: @echo Parando proceso matrix (%1)... @plink pi@%1 -pw raspberry sudo killall -9 matrix 在C中使用以下代码# 但我只得到“echo”输出,而不是“plink”输出,它是一个命令行程序,连接到运行命令并显示其输出的SSH服务器。正在执行此“plink”命令 如果我直接运行bat文件,输出是正确的。没有回答,因为这是一个猜测,但可以在进程上尝试RedirectStandar

我正在尝试重定向以下BAT文件的输出:

@echo Parando proceso matrix (%1)...
@plink pi@%1 -pw raspberry sudo killall -9 matrix
在C中使用以下代码#

但我只得到“echo”输出,而不是“plink”输出,它是一个命令行程序,连接到运行命令并显示其输出的SSH服务器。正在执行此“plink”命令


如果我直接运行bat文件,输出是正确的。

没有回答,因为这是一个猜测,但可以在进程上尝试
RedirectStandardInput=true
,或者在批处理文件上将
-batch
传递到
plink
,这样它就不需要标准输入。我记得当我不得不使用它时,普林克发生了一些奇怪的事情。还可以尝试重定向stderr(
RedirectStandardError=true
),查看它是否在那里编写而不是stdou。我曾尝试寻找一些旧代码,在这些代码中,我与所有这些进行了斗争,最终可以解决它,但记不清如何解决),但无法找到它:-/您等待进程退出,对吗?使用WaitForExit,因为它不包含在代码中。
Process process = new Process();
ProcessStartInfo psi = new ProcessStartInfo("run.bat", "192.168.1.100);
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
process.OutputDataReceived += ProcessOutput;
process.StartInfo = psi;
process.Start();
process.BeginOutputReadLine();


private void ProcessOutput(Object sender, DataReceivedEventArgs e)
{
    if (!string.IsNullOrEmpty(e.Data))
    {
        ProcessOut.Invoke(new ThreadStart(delegate ()
        {
            ProcessOut.Text += e.Data + "\r\n";
        }));
    }
}