В 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 echo hello" превращается в cmd /c "echo" "hello"
. Я имею в виду, я полагаю, я мог бы сделать кучу if / elses и попытаться быть умным об этом, но должен быть лучший способ?
Поэтому я обращаюсь к вам, ребята, за помощью. Как я могу запустить процесс в C #, который указывает свои аргументы не в виде строки cmd?