Как указать параметры с пробелами при запуске нового процесса - PullRequest
1 голос
/ 19 октября 2011

Я хотел бы запустить процесс с параметром: filename.

    string parms =  filechooser.Filename ;      
    psi = new ProcessStartInfo("timidity", parms);

Проблема возникает, когда пользователь выбирает имя файла с пробелами.Как я могу передать параметр с ""?

Спасибо

Ответы [ 4 ]

4 голосов
/ 19 октября 2011

Вы можете заключить значение в двойные кавычки:

string parameters = string.Format("\"{0}\"", filechooser.Filename);
psi = new ProcessStartInfo("timidity", parameters);
3 голосов
/ 19 октября 2011

Это должно сработать, пробелы тоже будут пропущены.

Однако, если вы хотите экранировать имя файла (которое зависит от запускаемого приложения, т. Е. Робости), сделайте следующее:

string parms = string.Format("\"{0}\"", filechooser.Filename);
psi = new ProcessStartInfo("timidity", parms);

Это создаст строку на основе формата \"{0}\". \" становится кавычкой ("), а {0} заменяется первым параметром после строки формата, то есть именем файла.

Вы можете попробовать это с помощью функции «Пуск», «Выполнить» или командной строки (cmd.exe). Введите робость, затем полное имя файла с пробелами в кавычках и посмотрите, работает ли это:

timidity "my filename"
2 голосов
/ 19 октября 2011

Попробуйте это.

string parms =  filechooser.Filename ;      
psi = new ProcessStartInfo("timidity", "\"" + parms + "\"");
1 голос
/ 19 октября 2011

Обратная косая черта - ваш друг:

"\"timidity\""
...