1

我从我的 C# 应用程序执行命令。

它运行良好,但有时我会出错。

我的问题是我看不到命令​​窗口中的错误或任何其他文本。

它只是空白。

在此处输入图像描述

有什么方法可以使文本在执行时间中显示与此处显示的相同?

在此处输入图像描述

这是我的代码:

        var processInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
        //processInfo.CreateNoWindow = true;
        processInfo.UseShellExecute = false;
        processInfo.RedirectStandardError = true;
        processInfo.RedirectStandardOutput = true;
        processInfo.WorkingDirectory = workingFolder;

        var process = Process.Start(processInfo);

        process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => 
        Console.WriteLine("output>>" + e.Data);//MessageBox.Show(e.Data);
        
        process.BeginOutputReadLine();

        process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => 
        Console.WriteLine("error>>" + e.Data);//MessageBox.Show(e.Data);
        process.BeginErrorReadLine();

        process.WaitForExit();

        Console.WriteLine("ExitCode: {0}", process.ExitCode);
        process.Close();
4

3 回答 3

1

我不是这方面的专家,但我认为您可以在一个try-catch块中编写此代码,并使用Console.WriteLine()命令在屏幕上显示异常消息。

于 2020-07-01T05:21:28.077 回答
1

在您的第一个屏幕截图中,窗口Select的标题栏中有。 您是否知道程序会暂停这一事实?如果您在窗口中单击并且可以通过按(如果我没记错的话)继续,就会发生 这种情况。 如果你使用并且窗口没有暂停,你应该看到你写了什么。cmd

SelectEnter
Console.WriteLine()cmd

于 2020-07-01T06:17:46.680 回答
1

您的代码没有任何问题,问题是您以错误的路径运行程序。

请按照以下步骤查找您的应用程序的路径:

您的应用路径

然后,在cmd.exe使用一堆cd命令的路径中。
这是代码:

var command = "echo hello world"; // < ------ example
var processInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
//processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
        

输出:

output>>hello world
output>>
error>>
ExitCode: 0
Press any key to continue . . .

此外,您可以使用Ctrl+运行您的应用程序,F5
我知道这些非常明显,但值得一提。

更新

你应该指定一个命令,也许你没有设置任何命令或者你的命令有~没有输出~

更新2

我更改了代码,当用户发送args到时myapp.exe,它指示它运行。

static void Main(string[] args)
{

    var command = string.Join("", args);
    var processInfo = new ProcessStartInfo("cmd.exe", "/c " +  command);
    ...

输出:

C:\Users\Mahan\Source\Repos\ConsoleApp11\ConsoleApp11\bin\Debug>myapp.exe 回声你好

output>>hello world
output>>
error>>
ExitCode: 0
于 2020-07-01T06:48:43.890 回答