2015-06-06 3 views
3

Я делаю программу, где мне нужно запустить cmd и запустить начальный файл. Проблема в том, что я использую MyProcess.WaithForexit();, и я думаю, что он не дожидается завершения обработки пакетного файла. Он просто ждет, пока cmd не будет закрыт. Мой код до сих пор:Как подождать, пока мой пакетный файл не будет завершен

System.Diagnostics.ProcessStartInfo ProcStartInfo = 
    new System.Diagnostics.ProcessStartInfo("cmd"); 
    ProcStartInfo.RedirectStandardOutput = true; 
    ProcStartInfo.UseShellExecute = false; 
    ProcStartInfo.CreateNoWindow = false; 
    ProcStartInfo.RedirectStandardError = true; 
    System.Diagnostics.Process MyProcess = new System.Diagnostics.Process(); 
    ProcStartInfo.Arguments = "/c start batch.bat "; 
    MyProcess.StartInfo = ProcStartInfo; 
    MyProcess.Start(); 
    MyProcess.WaitForExit(); 

Мне нужно подождать, пока пакетный файл не будет закончен. Как мне это сделать?

+6

'start' запускает партию и возвращает. Удалите 'start'. – CodeCaster

ответ

2

У команды запуска есть аргументы, которые могут привести к завершению запускаемой программы WAIT. Измените аргументы, как показано на рисунке ниже, чтобы передать «/ ожидание»:

ProcStartInfo.Arguments = "/c start /wait batch.bat "; 

Я хотел бы также предположить, что вы хотите, чтобы ваш пакетный файл, чтобы выйти из CMD envirionment так размещаете «выход» в конце партии.

@echo off 
rem Do processing 
exit 

Это должно обеспечить желаемое поведение.

+2

: добавление «exit» в конце командного файла имеет решающее значение. – Sarah

Смежные вопросы