繁体   English   中英

如何在我自己的控制台应用程序中执行命令提示符命令

[英]how to execute a command prompt command in my own console application

如何使控制台应用程序窗口的行为类似于命令提示符窗口并执行命令行参数?

这应该使您开始:

public class Program
{
    public static void Main(string[] args)
    {
        var proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName               = "cmd.exe",
                CreateNoWindow         = true,
                UseShellExecute        = false,
                RedirectStandardInput  = true,
                RedirectStandardOutput = true,
                RedirectStandardError  = true
            }
        };

        proc.Start();

        new Thread(() => ReadOutputThread(proc.StandardOutput)).Start();
        new Thread(() => ReadOutputThread(proc.StandardError)).Start();

        while (true)
        {
            Console.Write(">> ");
            var line = Console.ReadLine();
            proc.StandardInput.WriteLine(line);
        }
    }

    private static void ReadOutputThread(StreamReader streamReader)
    {
        while (true)
        {
            var line = streamReader.ReadLine();
            Console.WriteLine(line);
        }
    }
}

基础是:

  • 打开cmd.exe进程并捕获所有三个流(输入,输出,错误)
  • 从外部传递输入
  • 读取输出并传输到您自己的输出。

“重定向”选项很重要-否则您将无法使用流程的相应流。

上面的代码非常基本,但是您可以对其进行改进。

我相信你正在寻找这个

var command = "dir";
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
Console.WriteLine(result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM