在c#中逐个运行多个shell命令

时间:2013-03-27 16:00:11

标签: c# shell cmd command dos

我想从c#运行多个shell命令。我已经尝试Process.Start("");但它会为每个命令打开新实例。我也尝试ProcessStartInfoStreamWriter (ref.),但它对我不起作用。我想从我的c#应用程序中执行以下shell命令。

timeout 10
taskkill /F /IM "v*"
taskkill /F /IM "B*"
timeout 5
shutdown /f /p

如何从我的c#应用程序中逐个运行这些命令?

提前致谢...

2 个答案:

答案 0 :(得分:3)

尝试Process.StartInfo.CreateNoWindowProcess.WaitForExit()

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.aspx

http://msdn.microsoft.com/en-us/library/fb4aw7b8.aspx

您还可以通过执行System.Threading.Thread.Sleep(5000)

来消除“超时”命令

以下是一些可以帮助您入门的代码:

static void Main(string[] args)
{
    System.Threading.Thread.Sleep(10000);
    ExecuteCommandAndWait("taskkill", "/F /IM \"v*\"");
    ExecuteCommandAndWait("taskkill","/F /IM \"B*\"");
    System.Threading.Thread.Sleep(5000);
    ExecuteCommandAndWait("shutdown", "/f /p");
}

private static void ExecuteCommandAndWait(string fileName, string arguments)
{
    Process process = new Process();
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.FileName = fileName;
    process.StartInfo.Arguments = arguments;
    process.Start();
    process.WaitForExit();
}

答案 1 :(得分:2)

创建CMD文件并运行它可能是最简单的选择。

旁注:shutdown /f /t 30可能是一个更简单的命令。