CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Ответить
Аватара пользователя
sergeybutakov

CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Сообщение sergeybutakov »

Здравствуйте, мне нужно решить одну задачу:

При потере пинга, нужно выполнить команду удаления из папки, и это уже есть (нашел тут на форуме, за что огромное спс). Но перед удалением мне надо чтобы батник убедился, что определенны процесс завершен. Думаю объяснил нормально что мне нужно, проще говоря совместить грамотно два батника. Призываю овеликих к помощи плз

Спасибо всем за отклик





вот батник, который удаляет при потере пинга:

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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









вот батник который делает действие после завершения процесса:

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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
Аватара пользователя
alpap

Re: CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Сообщение alpap »

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

Re: CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Сообщение sergeybutakov »

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

я просто повторюсь - не бумбум
Аватара пользователя
sergeybutakov

Re: CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Сообщение sergeybutakov »

Получается следующее:

он смотрит на пинг, пинг видит, и дальше все.

мне надо именно: ждет пока отключится пинг, после этого ждет пока отключится процесс, и после этого удаляет файлы.
Аватара пользователя
alpap

Re: CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Сообщение alpap »

Цитата sergeybutakov:



ждет пока отключится пинг
CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса




с этого места поподробнее

(какая тогда разница прошел пинг или нет?)

- если проходит и отключился=это

- если не проходит и отключился=другое



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



поменяйте тогда первое булево условие || на &&, пройдет пинг (когда-то закончится, естественно), все довольны и при дальше при отсутствии процесса делаем что надо.

(да и при этом уж адрес ip должен быть правильным и рабочим)
Аватара пользователя
sergeybutakov

Re: CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Сообщение sergeybutakov »

в первом примере что я скинул, как я понимаю при помощи 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
Аватара пользователя
alpap

Re: CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Сообщение alpap »

постоянно будет колошматить, проверять пинг и наличие процесса, как только не будет пинга, а при этом нужный процесс тоже не будет работать, на моем коде выскочить слово "удаляем":



Код:

Код: Выделить всё

@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
Ответить

Вернуться в «Скриптовые языки администрирования Windows»