2016-01-20 52 views
2

如果我在C#中運行進程。使用cmd/c而不是直接運行流程有什麼好處?使用cmd.exe/c而不使用cmd的好處

例:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
info.Arguments = "/c application.exe"; 
Process.Start(info); 

因爲如果你使用cmd /c反對

ProcessStartInfo info = new ProcessStartInfo("application.exe"); 
Process.Start(info); 
+0

你知道/ c參數做什麼嗎? –

+0

@JeroenVannevel是的。所以我問這個問題。 – CodingMadeEasy

回答

1

,您可以通過&&分離指令同時執行多個命令。例如:cmd /c "application1.exe&&application2.exe"。否則,如果只有一個進程要執行,那麼直接簡單地執行進程就沒有區別。

編輯:顯然cmd /c也可以返回一個錯誤,如果進程不存在,例如。

+0

感謝您的回答。如果我們重定向「application.exe」的輸出,cmd/c會等到EndOfStream到達爲止嗎?或者只要流程啓動就會關閉? – CodingMadeEasy

+0

'cmd/c'是一個同步調用,直到執行的進程運行完成纔會返回。重定向「application.exe」的輸出將不起作用。 – Chase

1

使用CMD.EXE的另一個好處是如果您要執行內置命令。 CMD.EXE中的許多命令不是單獨的可執行文件,而是完全實現在CMD.EXE內,例如dir,copy,mkdir,cd等等。 MKLINK是一個內置的命令,我見過旅行人員了。

我不知道一個簡單的方法來獲取內置命令列表。但是,您可以使用HELP(不是內置的!)獲得CMD.EXE命令的列表,並將每個命令傳遞給WHERE。如果WHERE找不到,那麼該命令必須是內置的。

此外,如果你想執行BAT/CMD文件,CMD.EXE是要走的路。

相關問題