先假設我要執行cmd.exe程式,並且利用它建立資料夾
首先先設定ProcessStartInfo類別,因為不希望看到cmd程式的黑色畫面,所以將執行視窗隱藏
設定完後將ProcessStartInfo丟至process,執行start就完成了,超簡單
其中若要接收執行完成訊息或者錯誤訊息,ProcessStartInfo的相對應屬性要開啟,並且在process內的相對應event寫下要做的事情
程式如下:
public static string StartProcess(string fileName, string arguments)
{
var procOutput = new StringBuilder();
var startInfo = new ProcessStartInfo(fileName, arguments)
{
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true
};
using (var proc = new Process() { StartInfo = startInfo })
{
//接收成功時文字訊息
proc.OutputDataReceived += (sender, e) =>
{
if (!string.IsNullOrEmpty(e.Data)) procOutput.AppendLine(e.Data);
};
//接收失敗時文字訊息
proc.ErrorDataReceived += (sender, e) =>
{
if (!string.IsNullOrEmpty(e.Data)) procOutput.AppendLine(e.Data);
};
proc.Start();
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
proc.WaitForExit();
if (proc.ExitCode < 1) //每個程式錯誤代碼定義都不同
{
//success
}
else
{
//fail: do something
}
}
return procOutput.ToString();
}
執行cmd建立資料夾 (記得參數開頭要加上'/c')
string msg = deployment.StartProcess("cmd.exe", @"/c md d:\\ss");
若原本就是一個exe檔,那我們就直接呼叫他就可以了
string msg = deployment.StartProcess("net", @"use");
string msg = deployment.StartProcess("robocopy", @"d:\work e:\back /e /xf *.tmp *.bak ");
此外,也可以搭配一些bat或腳本指令,用起來更方便唷