Войти

Показать полную графическую версию : Как заставить bat-файл ждать завершение определенного процесса и выполнение следующей


rafka
07-09-2023, 11:43
Добрый день!
Как заставить bat-файл ждать завершение определённого процесса и выполнение следующей команды?

Допустим я хочу установить Автокад. После успешного установки Автокада закрывался установочный Setup.exe и продолжалось следующая команда?

Petya V4sechkin
07-09-2023, 12:07
rafka, команда start /wait.

rafka
07-09-2023, 12:51
команда start /wait. »
Это не подходит

Petya V4sechkin
07-09-2023, 13:06
rafka, что именно не подходит?

rafka
07-09-2023, 13:18
что именно не подходит? »

с этим кодом программа запускается, но как только готовится к установки и принимаешь лицензии и условии, то, до установки закрывается Бат файл, так как в конце стоит :END. И соответственно программа не устанавливается и не происходить :Clean

start /wait C:\Users\WDAGUtilityAccount\Desktop\Autocad\Setup.exe
cls
:Clean

reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run /v "Autodesk Genuine Service " /f
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run /v "Autodesk Desktop App" /f
del "C:\Users\Public\Desktop\Autodesk Desktop App.lnk"

:END
cls & exit
timeout 10 > nul
taskkill /im cmd.exe /f > nul


А мне надо что бы после нажатии на установить, батник дождалась до установки программы и потом закрывал установочный Setup.exe и продолжалось следующая команда. то есть :Clean

Serguei Kouzmine
07-09-2023, 17:18
вы уже используете значит знаете про taskkill.exe

пора добавить tasklist.exe и цикл и все будет как задумано

rafka
07-09-2023, 17:22
пора добавить tasklist.exe и цикл и все будет каа задумано »
Вот именно что куда добавить taskkill /im Setup.exe /f > nul я не знаю.

Что бы тасккилл работал надо же перед ним какую то команду написать что бы проверил закончился ли этот установка или нет.

Serguei Kouzmine
07-09-2023, 17:41
точно - пора добавить tasklist.exe и цикл и все

вам нужна помощь ?

rafka
07-09-2023, 17:46
вам нужна помощь ? »
Да , если вам не трудно!

Serguei Kouzmine
07-09-2023, 17:46
ваша задача довольно специфическая - слишком узок круг
но похожее было недвано
делал пулл реквест к полезной праммроге мноочнгопотой консиивер флак где это было нужно

https://github.com/melk0r64/Resampler-Script/blob/main/ReSampler.bat

:WAIT_FOR_PROCESS
rem Wait for one process to finish
PING -n 2 127.0.0.1 >NUL
for /f "tokens=3" %%a in ('TASKLIST /FI "WINDOWTITLE eq C:\ReSampler\ReSampler.exe" /NH') do (
if "%%a" == "C:\ReSampler\ReSampler.exe" (
rem There is still at least one instance of the resampler tool running
goto :WAIT_FOR_PROCESS
)
)
set "PROCESS_COUNTER=0"
exit /B
goto :EOF


приведенный фрагмент кода как у оригинального проекта - этот код можно оптимизировать но для вашей узкой задачи надеюсь подойдет




© OSzone.net 2001-2012