Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] ожидание окончания процесса (http://forum.oszone.net/showthread.php?t=269228)

rocet 03-10-2013 13:34 2227870

ожидание окончания процесса
 
как из командной строки (не запустить и ждать!)дождаться завершения процесса "msiexec.exe"?
P.S. nircmd смотрел но не разобрался, если объясните буду благодарен.

sunnykey 03-10-2013 13:42 2227872

использовать команду
Код:

start /wait msiexec.exe

ne-dm 03-10-2013 13:54 2227880

sunnykey, можно подумать так
Код:

msiexec.exe
не будет ждать? Будет.

Только вопрос не в этом, как подождать завершение процесса не запуская его.

rocet 03-10-2013 13:56 2227882

Цитата:

Цитата sunnykey
использовать команду »

не то, он запустит и будет ждать, а мне надо просто ждать его завершение, то есть msiexe.exe будет запущен ранее не из пакетного файла
Цитата:

Цитата ne-dm
Только вопрос не в этом, как подождать завершение процесса не запуская его. »

:yes:

Iska 03-10-2013 14:36 2227900

rocet, каким образом, как именно, откуда запускается процесс «msiexec.exe»? Откуда уверенность, что он запущен? Откуда уверенность, что он один? Если их окажется несколько — как именно определить, какой из них наш?

Так что всё отнюдь не «просто», как Вы пишете.

sunnykey 03-10-2013 15:18 2227937

Цитата:

Цитата rocet
Только вопрос не в этом, как подождать завершение процесса не запуская его »

Как это дождаться не запуская? То есть процесс msiexec запущен каким-то другим приложением и нужно дождаться его завершения? Тогда только через цикл, периодически получая список текущих процессов
Код:

#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"

while (Get-Process -Name "msiexec" -ErrorAction SilentlyContinue) {
    "Установщик Windows ещё запущен"
    Start-Sleep -Seconds 5
}
"Установщик Windows потушен"


Petya V4sechkin 03-10-2013 17:24 2228007

Цитата:

Цитата sunnykey
То есть процесс msiexec запущен каким-то другим приложением и нужно дождаться его завершения? Тогда только через цикл, периодически получая список текущих процессов

При этом ожидание может затянуться. Потому что служба Windows Installer остается запущенной 10 минут после окончания установки/удаления.

rocet 04-10-2013 09:18 2228359

Iska, http://forum.oszone.net/thread-46483-217.html.
процесс и првда будет не один
читать дальше »
неро состоит из главного установщика и компонентов(тоже кстате .msi) :unsure:

Iska 04-10-2013 12:13 2228429

Цитата:

Цитата rocet

Вопросы По WPI — это превосходно, но что это должно означать?

Цитата:

Цитата rocet
процесс и првда будет не один
неро состоит из главного установщика и компонентов(тоже кстате .msi) »

Ждём ответа на остальные:.
Цитата:

Цитата Iska
rocet, каким образом, как именно, откуда запускается процесс «msiexec.exe»? Откуда уверенность, что он запущен? Откуда уверенность, что он один? Если их окажется несколько — как именно определить, какой из них наш? »

вопросы.

rocet 04-10-2013 13:55 2228500

Цитата:

rocet, каким образом, как именно, откуда запускается процесс «msiexec.exe»?
1) в той теме написан был мой вопрос на последней странице: из sfx(после распаковки)
Цитата:

Откуда уверенность, что он запущен?
2) запустится после распаковки
Цитата:

Если их окажется несколько — как именно определить, какой из них наш?
4) первый что запустится :drug:

Iska 04-10-2013 14:32 2228534

Цитата:

Цитата rocet
1) в той теме написан был мой вопрос на последней странице: »

Надо приводить не ссылку на тему, а ссылку на конкретное сообщение.


Цитата:

Цитата rocet
из sfx(после распаковки) »

Приведите конфигурацию sfx. Конкретно интересует команда инициализации «msiexec.exe».

Цитата:

Цитата rocet
4) первый что запустится »

Нет никаких гарантий, что он будет первым.

rocet 04-10-2013 14:59 2228555

исправлюсь :-)
Path=%TEMP%\NeroCD12\
Setup=cover.desingerinstall.msi /quiet
Цитата:

Цитата Iska
Нет никаких гарантий, что он будет первым. »

почему никаких гарантий? Запуск следующего только после окончания предыдущего приложения.

Iska 04-10-2013 16:38 2228622

Цитата:

Цитата rocet
почему никаких гарантий? »

Потому что нет. Есть масса вариантов, от вручную запущенной инсталляции, до автообновления какого-либо приложения.

Цитата:

Цитата rocet
Setup=cover.desingerinstall.msi /quiet »

Так. А дальше что будет?

rocet 05-10-2013 04:56 2228866

удаление bat-ником времменных файлов(распакованный инсталятор в папке temp)после установки.

Iska 05-10-2013 08:12 2228881

Цитата:

Цитата rocet
удаление bat-ником времменных файлов(распакованный инсталятор в папке temp)после установки. »

Разве сие не должен делать Ваш sfx самостоятельно и автоматически?

rocet 05-10-2013 10:25 2228919

я в sfx дуб толком и не изучал его.

rocet 05-10-2013 15:20 2229014

зря я вам мозги потрепал
вот что я сделал
установщик и его барахло засунул в sfx c именем NeroCD12.exe
читать дальше »
команды
Path=%TEMP%\NeroCD12\
SILENT=1

bat c таким содержимым
читать дальше »
@ECHO OFF
color 0a
title Nero Cover Designer 12 install
start /wait NeroCD12.exe
start /wait %TEMP%\NeroCD12\nero.nerocoverdesigner.msi /quiet
RD /S /Q "%TEMP%\NeroCD12"
exit

вопрос возник можно ли запустить его в свёрнутом виде?

Iska 06-10-2013 02:49 2229331

Цитата:

Цитата rocet
вопрос возник можно ли запустить его в свёрнутом виде? »

Можете просто использовать скрипт WSH вместо пакетного файла, либо: Скрываем консольные окна.

rocet 08-10-2013 15:28 2230799

Iska, мой скрипт в win7 при запуске от имени одминистратора выдаёт ошибку не найден файл neroCD12.exe (лежит с ним в одной папке) что делать?

Petya V4sechkin 08-10-2013 17:01 2230847

Цитата:

Цитата rocet
выдаёт ошибку не найден файл neroCD12.exe

Откуда скрипт запускаете? Если из сети, почитайте
[решено] отличия в работе при запуске от администратора

Также замените строку:
Цитата:

Цитата rocet
start /wait NeroCD12.exe

на:
Код:

start "" /wait "%~dp0NeroCD12.exe"

rocet 09-10-2013 09:11 2231165

ясно, спасибо!

Alofa 12-03-2014 10:48 2322448

На самом деле все просто:
Цитата:

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

Farxat 02-04-2014 16:48 2332098

Выполняю обновление 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 2483898

А что делать если 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 2483913

Цитата:

Цитата mariolast
А что делать если errorlevel -1073741502? »

Разбираться с ошибками при исполнении «tasklist» и «find "prog.exe"».

mariolast 17-03-2015 18:43 2483919

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

Iska 17-03-2015 19:23 2483950

Цитата:

Цитата mariolast
Отслеживаем пока установится инсталлятор (код не привожу), ErrorLevel 0 во время установки. После как отработал инсталлятор оно становится -1073741502. »

Напрасно не приводите код. Не может быть одновременно «0» и «-1073741502».

mariolast 17-03-2015 19:43 2483962

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

Iska 17-03-2015 20:00 2483971

mariolast, повторю: нет смысла обсуждать сферического коня в вакууме. Покажите Ваш код.
Цитата:

Цитата mariolast
Код ужене приведу, рабочий день закончился, ушел домой. »

Завтра будет новый день.

mariolast 18-03-2015 11:26 2484226

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 *.*

Такой вот код


Время: 20:34.

Время: 20:34.
© OSzone.net 2001-