【问题标题】:How to get execution command window in c#如何在c#中获取执行命令窗口
【发布时间】:2020-10-21 12:10:34
【问题描述】:

我从我的 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();

【问题讨论】:

  • 您的代码无法读取StandardOutputStandardError
  • 您也不需要使用cmd.exe 来运行进程。只需将路径传递给可执行文件并将参数传递给ProcessStartInfo 构造函数

标签: c# command console-application command-window


【解决方案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&gt;myapp.exe 回声你好

output>>hello world
output>>
error>>
ExitCode: 0

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这应该是最好的评论。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      相关资源
      最近更新 更多