C# 上でコマンドラインを実行するクラスとして ProcessStartInfo
, Process
があるのですが
こちら引数に スペースありを渡した場合、 別のコマンドオプションと認識されてしまい正しい挙動をしなくなってしまいます
// add /Assets/TextMesh Pro の3引数と認識される var progress = new ProcessStartInfo("git", "add /Assets/TextMesh Pro") { WindowStyle = ProcessWindowStyle.Hidden, UseShellExecute = false, RedirectStandardOutput = true }; using (var p = Process.Start(progress)) { var output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); return output; }
そのためスペースが含まれる引数を渡した場合は "" もしくは '' で囲ってあげる必要がでてきます
var progress = new ProcessStartInfo("git", "add \"/Assets/TextMesh Pro\"")
実行時にオプションを strings[] でもらって加工してから渡す方法でもいいかもしれません
public static void Exe(string path, params string[] args) { foreach (var a in args) { if (a.Contains(" ")) { // 加工処理 } } }