Показать полную графическую версию : [решено] ожидание окончания процесса
На самом деле все просто:
:repeat
tasklist | find "msiexec.exe"
if not errorlevel 1 GOTO repeat
<Следующая Команда>
Через "tasklist" процесс проверки наличия процесса зациклин.
После того как "msiexec.exe" завершится последует переход к <Следующая Команда>.
Выполняю обновление 1с, через цикл For перебираю папки с базами. Как заставить цикл переходить к следующей папке только после завершения работы с предыдущей. Пробывал использовать start /wait, но запуск не удается (
@echo off
....
FOR /F "usebackq delims=" %%i IN (`dir /AD /B %p_basedir%`) do (start /d "%p_1cPlatform% CONFIG /N User /P Pass /F %p_basedir%\%%i /UpdateCfg %P_update_rel% /UpdateDBcfg" /wait)
....
mariolast
17-03-2015, 17:57
А что делать если errorlevel -1073741502?
Вот так не срабатывает, вечный цикл.
:repeat
Echo %ErrorLevel%
tasklist | find "prog.exe"
if errorlevel -1073741502 GOTO end
if not errorlevel 1 GOTO repeat
:end
Echo %ErrorLevel%
А что делать если errorlevel -1073741502? »
Разбираться с ошибками при исполнении «tasklist» и «find "prog.exe"».
mariolast
17-03-2015, 18:43
Ну там ошибок как бы нет. Отслеживаем пока установится инсталлятор (код не привожу), ErrorLevel 0 во время установки. После как отработал инсталлятор оно становится -1073741502. Гугль наводит на мысль, что такое значение может быть, если инсталлятор после установки хочет перегруз. Мне всего лишь надо проверить, что инсталлятор закончил свою работу и не висит в памяти, то что требуется там перегруз или нет, не волнует.
Отслеживаем пока установится инсталлятор (код не привожу), ErrorLevel 0 во время установки. После как отработал инсталлятор оно становится -1073741502. »
Напрасно не приводите код. Не может быть одновременно «0» и «-1073741502».
mariolast
17-03-2015, 19:43
Не одновременно. сначала оно равно «0», пока процесс в памяти висит. Соответственно цикл бегает. Потом инсталлятор заканчивает свою работу, из процессов исчезает и вот тут то и превращается значение «0» в «-1073741502». Я то ожидал 1. Поэтому думал прокатит еще добавочно if errorlevel -1073741502. Наверное дело в том, что инсталлятор ставит программу поверху уже установленной, но мне по условиях задачи так и надо. Сама программа установилась нормально, никаких нареканий по этому поводу не имеется. Код ужене приведу, рабочий день закончился, ушел домой.
mariolast, повторю: нет смысла обсуждать сферического коня в вакууме. Покажите Ваш код.
Код ужене приведу, рабочий день закончился, ушел домой. »
Завтра будет новый день.
mariolast
18-03-2015, 11:26
xcopy /r /y Program.exe \\Comp\Free
xcopy /r /y RunAsSpc32.exe \\Comp\Free
xcopy /r /y DelTemp.bat \\Comp\Free
psexec.exe -u wwelt-3073\admin -p r2d2c3p0 \\192.168.1.210 cmd /c "net use l: \\192.168.1.33\Free /user:1 1& xcopy /y /r l:\Program.exe c:\windows\temp&xcopy /y /r l:\DelTemp.bat c:\windows\temp&xcopy /y /r l:\RunAsSpc32.exe c:\windows\temp&cd ..&cd temp&RunAsSpc32.exe /program:"c:\windows\temp\Program.exe /verysilent /sp- /norestart" /user:"admin" /password:"pass" /quiet&DelTemp.bat"
del /f /q \\Comp\Free\Program.exe
del /f /q \\Comp\Free\RunAsSpc32.exe
del /f /q \\Comp\Free\DelTemp.bat
:repeat
Echo %ErrorLevel%
tasklist | find "Program.exe"
if errorlevel 0 GOTO repeat
:end
Echo %ErrorLevel%
Erase /f /q *.*
Содержимое DelTemp.bat
:repeat
Echo %ErrorLevel%
tasklist | find "Program.exe"
if errorlevel 0 GOTO repeat
:end
Echo %ErrorLevel%
Erase /f /q *.*
Такой вот код
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.