Показать полную графическую версию : [решено] мониторинг пинга+выполнение команды после завершения процесса
sergeybutakov
10-03-2017, 08:06
Здравствуйте, мне нужно решить одну задачу:
При потере пинга, нужно выполнить команду удаления из папки, и это уже есть (нашел тут на форуме, за что огромное спс). Но перед удалением мне надо чтобы батник убедился, что определенны процесс завершен. Думаю объяснил нормально что мне нужно, проще говоря совместить грамотно два батника. Призываю овеликих к помощи плз
Спасибо всем за отклик
@echo off
setlocal enabledelayedexpansion
set ip=8.8.8.8
set t=2
:#
ping -4 -n 1 %ip%| find/i "TTL="&& goto #
:##
ping -4 -n 2 %ip%| find/i "TTL="&& (goto #& set n=)|| (
set/a n+=1& if !n! lss %t% (goto ##) else (del /f /q C:\xmod\*.* %1)
)
endlocal
exit/b 0
@echo off
setlocal ENABLEDELAYEDEXPANSION
Set Process=engine
tasklist | Find /i "engine.exe" || (goto Else)
:THEN
:Repeat
>nul ping.exe -n 2 127.0.0.1
taskkill.exe /f /im "engine.exe" || goto :Repeat
:ELSE
start /wait "Uninstall" Uninstall.exe
sergeybutakov,
достаточно этого (если не требуется логов или обратного подтверждения - чисто выполнение задуманного), ниже код:
(если не пингуется адрес и при этом нет запущенного процесса с именем "CCleaner64.exe" происходит удаление чего надо)
@echo off
set "ip=1279.0.0.1" &: такого адреса нет (для проверки)
set "process=CCleaner64.exe"
ping -n 1 %ip%|>nul find/i "TTL=" || (
tasklist|>nul find/i "%process%" || (
echo Удаляем что-то из какой-то папки
)
)
pause
sergeybutakov
10-03-2017, 14:06
alpap, чет не получается, либо я подтупливаю.
выводит "для продолжения нажмите..." и все.
я правильно вставил del?
@echo off
set "ip=1279.0.0.1" &: такого адреса нет (для проверки)
set "process=CCleaner64.exe"
ping -n 1 %ip%|>nul find/i "TTL=" || (
tasklist|>nul find/i "%process%" || ( del /f /q C:\x\*.*
echo
)
)
pause
я просто повторюсь - не бумбум
я правильно вставил del? »
Забыли убрать перед ним echo:
echo del /f /q C:\x\*.* »
sergeybutakov
10-03-2017, 14:35
Получается следующее:
он смотрит на пинг, пинг видит, и дальше все.
мне надо именно: ждет пока отключится пинг, после этого ждет пока отключится процесс, и после этого удаляет файлы.
ждет пока отключится пинг »
с этого места поподробнее
(какая тогда разница прошел пинг или нет?)
- если проходит и отключился=это
- если не проходит и отключился=другое
как видите отсутствие результата - тоже результат, именно на этом программирование и построено.
поменяйте тогда первое булево условие || на &&, пройдет пинг (когда-то закончится, естественно), все довольны и при дальше при отсутствии процесса делаем что надо.
(да и при этом уж адрес ip должен быть правильным и рабочим)
sergeybutakov
10-03-2017, 15:00
в первом примере что я скинул, как я понимаю при помощи goto он зацикливает процесс проверки. именно это мне и нужно.
суть в том что может быть А и Б.
А - принудительное отключение 8.8.8.8. вариант Б - потери, обычные потери пинга (канал wifi)
удаление должно произойти только когда отключится пинг (вариант А). но тк скрипт может сработать при потере пинга (вариант Б) то он удалил файл, и процесс которому нужен этот файл, может прерваться. поэтому я хочу чтобы в ситуации с пингом (хоть А хоть Б) он убедился, что процесс завершен, и только тогда удалит файл. А если процесс не завершен - он будет ждать пока закончится и удалит.
фух, выдох)))
___________________
В общем вот так как то слепил, и даже получилось :)
подправьте чтобы грамотно смотрелось плз
@echo off
set "ip=8.8.8.8"
:#
set "process=CCleaner64.exe"
:##
ping -n 1 %ip%|>nul find/i "TTL="&& (goto #& set n=)||(
tasklist|>nul find/i "%process%"&& (goto ##& set n=)|| ( del /f /q C:\x\*.*
)
)
pause
постоянно будет колошматить, проверять пинг и наличие процесса, как только не будет пинга, а при этом нужный процесс тоже не будет работать, на моем коде выскочить слово "удаляем":
@echo off
set "ip=127.0.0.1" &: рабочий ip
set "process=CCleaner64.exe"
cmd/c for /l %%i in () do @(ping -n 1 %ip%^|^>nul find/i "TTL=" ^|^| (tasklist^|^>nul find/i "%process%" ^|^| echo удаляем))^&^>nul timeout /t 1 /nobreak
pause
sergeybutakov
10-03-2017, 18:26
Спасибо большое за помощь!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.