如何在C#中使用更多的DOS命令

时间:2011-08-09 16:00:54

标签: c# dos process

我在DOS中有大约7个命令,我想在我的C#程序中运行它们。我可以这样做:

System.Diagnostics.Process.Start("cmd.exe", "my more commands here");

修改 我正在制作小应用程序将运行g ++。这现在是正确的吗?:

 System.Diagnostics.Process.Start("cmd.exe", "/k cd C:\\Alps\\compiler\\ /k g++ C:\\Alps\\" + project_name + "\\Debug\\Main.cpp");

编译命令:

g++ -c C:\Alps\here_is_projectname\Debug\Main.cpp -o main.o

4 个答案:

答案 0 :(得分:7)

是的,您可以使用“/ C”开关传递命令行:

System.Diagnostics.Process.Start("cmd.exe", "/C dir");

答案 1 :(得分:7)

cmd.exe /k <command>
cmd.exe /c <command>

两者都有效。

  • /k 将执行该命令,并为您提供一个空提示(如果您只想执行反馈,可能不太适合您的应用程序。)
  • /c 将执行该命令,并在完成后关闭窗口。

如果您要从特定目录执行命令,可以执行以下操作:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe");
p.StartInfo.Arguments = String.Format(@"/c g++ ""C:\Alps\{0}\Debug\Main.cpp""", project_name);
p.StartInfo.WorkingDirectory = @"C:\Alps\compiler";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.ErrorDialog = false;
p.Start();

答案 2 :(得分:3)

您还可以执行以下操作....

Process.Start(new ProcessStartInfo()
{
 Arguments = "args",
 WorkingDirectory = "C:\SomePath",
 UseShellExecute= true,
 FileName = ".exe"
});

如果需要

,还有processstartinfo上的选项可以重定向输入和输出

例如......

Process.Start(new ProcessStartInfo()
{
 Arguments = "C:\\Alps\\" + project_name + "\\Debug\\Main.cpp",
 WorkingDirectory = "C:\\Apls\\",
 UseShellExecute= true,
 FileName = "g++.exe"
});

答案 3 :(得分:2)

您可以启动cmd.exe,使用您的命令重定向流式传输的stdin和脚。

 process.Start(...);


                    process.StandardInput.WriteLine("Dir xxxxx");
                    process.StandardInput.WriteLine("Dir yyyyy");
                    process.StandardInput.WriteLine("Dir zzzzzz");
                    process.StandardInput.WriteLine("other command(s)");

当然,您应该记住将流程星形信息设置为您想要重定向输入:

 ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe);
        processStartInfo.CreateNoWindow = true;

        processStartInfo.ErrorDialog = false;

        processStartInfo.RedirectStandardInput = true;