我在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
答案 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;