Войти

Показать полную графическую версию : [решено] ожидание окончания процесса


Страниц : 1 [2]

rocet
09-10-2013, 09:11
ясно, спасибо!

Alofa
12-03-2014, 10:48
На самом деле все просто:
:repeat
tasklist | find "msiexec.exe"
if not errorlevel 1 GOTO repeat
<Следующая Команда>
Через "tasklist" процесс проверки наличия процесса зациклин.
После того как "msiexec.exe" завершится последует переход к <Следующая Команда>.

Farxat
02-04-2014, 16:48
Выполняю обновление 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%

Iska
17-03-2015, 18:31
А что делать если errorlevel -1073741502? »
Разбираться с ошибками при исполнении «tasklist» и «find "prog.exe"».

mariolast
17-03-2015, 18:43
Ну там ошибок как бы нет. Отслеживаем пока установится инсталлятор (код не привожу), ErrorLevel 0 во время установки. После как отработал инсталлятор оно становится -1073741502. Гугль наводит на мысль, что такое значение может быть, если инсталлятор после установки хочет перегруз. Мне всего лишь надо проверить, что инсталлятор закончил свою работу и не висит в памяти, то что требуется там перегруз или нет, не волнует.

Iska
17-03-2015, 19:23
Отслеживаем пока установится инсталлятор (код не привожу), ErrorLevel 0 во время установки. После как отработал инсталлятор оно становится -1073741502. »
Напрасно не приводите код. Не может быть одновременно «0» и «-1073741502».

mariolast
17-03-2015, 19:43
Не одновременно. сначала оно равно «0», пока процесс в памяти висит. Соответственно цикл бегает. Потом инсталлятор заканчивает свою работу, из процессов исчезает и вот тут то и превращается значение «0» в «-1073741502». Я то ожидал 1. Поэтому думал прокатит еще добавочно if errorlevel -1073741502. Наверное дело в том, что инсталлятор ставит программу поверху уже установленной, но мне по условиях задачи так и надо. Сама программа установилась нормально, никаких нареканий по этому поводу не имеется. Код ужене приведу, рабочий день закончился, ушел домой.

Iska
17-03-2015, 20:00
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