Как выполнить команду оболочки с аргументами? - PullRequest
0 голосов
/ 15 марта 2012

Я пытаюсь выполнить команду оболочки с аргументами в C #, и « Системе не удается найти указанный файл ».

Я пробовал:

p.StartInfo.FileName = Directory.GetCurrentDirectory() + "\\timesync\\NistClock.exe sync";

путь правильный 100% NistClock.exe выполняется при запуске без параметра "sync"

Ответы [ 3 ]

6 голосов
/ 15 марта 2012

Вы должны немного изменить свой код:

p.StartupInfo.FileName = Path.Combine(Directory.GetCurrentDirectory(), "timesync\\NistClock.exe");
p.StartupInfo.Arguments = "sync";
4 голосов
/ 15 марта 2012
string path = Directory.GetCurrentDirectory() + "\\timesync\\NistClock.exe";                
string args = "sync";
ProcessStartInfo p = new ProcessStartInfo(path, args);
Process process = Process.Start(p);
3 голосов
/ 15 марта 2012

Используйте свойство Arguments.

p.StartInfo.FileName = Directory.GetCurrentDirectory() + "\\timesync\\NistClock.exe";
p.StartInfo.Arguments = "sync";

Кстати, будьте осторожны с использованием Directory.GetCurrentDirectory().Обратите внимание, что этот метод может возвращать что-то другое, если вы используете какие-либо файловые диалоги в приложении.Возможно, лучше использовать вместо этого что-то вроде Assembly.GetExecutingAssembly().Location и проанализировать каталог оттуда.

...