2
在Java中,當我想啓動一個進程,我可以告訴它的命令來運行:指定參數
String[] commands = {"Perl", "-e", "print \"hello world\""}
ProcessBuilder processBuild = new ProcessBuilder();
processBuild.command(commands);
在C#中,我有一個問題,因爲我需要做同樣的的事情,但我必須分別填寫filename
和arguments
作爲單獨的字符串:
processBuild.FileName = commands[0];
for (int x = 1; x < commands.Length; x++)
{
processBuild.Arguments += " " + commands[x];
}
現在我不知道是什麼的用戶將要試圖調用,所以我不能調整這符合預期程序。我上面的解決方案的問題是該進程試圖運行perl -e print "hello world"
。爲什麼它迫使我像命令行一樣對待它?
當然,我不能做類似if !start with [-/] { Surround with quotes }
的東西,因爲然後像「cmd/c回聲你好」變成cmd /c "echo" "hello"
。我的意思是我想我可以製作一些if/elses,並試着對它做出明智的決定,但是必須有更好的方法?
所以我轉向你們幫我一把。我如何在C#中啓動一個以非cmd行方式指定其參數的進程?
這仍然需要知道如何創建一個有效的參數字符串(它可以被解析成參數列表)。沒有辦法只提供參數列表(Unix的'execv'或'execvp'),因此不需要相關引用的知識? – jamessan 2012-03-07 20:51:31