C# Измените папку и запустите процесс в CMD, дождитесь его завершения

Мне нужно открыть внешний процесс из моего приложения Windows Forms. Более того, мне нужно сделать это несколько раз во время выполнения приложения. По сути, я выполняю файл.exe с аргументами несколько раз из командной строки, однако мне нужно изменить папку, где находится.exe, чтобы он работал правильно. Пока я открываю cmd так:

 ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.UseShellExecute = false;

        Process process = Process.Start(processStartInfo);

Затем с помощью process.WriteLine для подачи команд в CMD.

process.StandardInput.WriteLine("Awin.exe -X " + filePath + "/" + fileNumber + " ID=\"" + id + "\"");

И мне нужно сделать это для нескольких файлов fileNumber. Кроме того, мне нужно подождать, пока процесс начнется от ввода до конца, прежде чем перейти к следующему. Есть ли лучший способ сделать это, потому что я не получаю хорошие результаты от использования process.WaitForExit

1 ответ

ProcessStartInfo класс имеет WorkingDirectory имущество.

ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.WorkingDirectory = your_directory
(...)

//do your thing
Process process = Process.Start(processStartInfo);

Аргументы могут быть переданы через Arguments имущество

Другие вопросы по тегам