Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

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

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: sergeybutakov
Дата: 10-03-2017
Здравствуйте, мне нужно решить одну задачу:
При потере пинга, нужно выполнить команду удаления из папки, и это уже есть (нашел тут на форуме, за что огромное спс). Но перед удалением мне надо чтобы батник убедился, что определенны процесс завершен. Думаю объяснил нормально что мне нужно, проще говоря совместить грамотно два батника. Призываю овеликих к помощи плз
Спасибо всем за отклик

вот батник, который удаляет при потере пинга:
Код: Выделить весь код
@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

Отправлено: 08:06, 10-03-2017

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:43, 10-03-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


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, 10-03-2017 в 14:24.


Отправлено: 14:06, 10-03-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата sergeybutakov:
я правильно вставил del? »
Забыли убрать перед ним echo:
Цитата sergeybutakov:
Код: Выделить весь код
echo del /f /q C:\x\*.*
»
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:24, 10-03-2017 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:35, 10-03-2017 | #5


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата sergeybutakov:
ждет пока отключится пинг »
с этого места поподробнее
(какая тогда разница прошел пинг или нет?)
- если проходит и отключился=это
- если не проходит и отключился=другое

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

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

Последний раз редактировалось alpap, 10-03-2017 в 14:50.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:45, 10-03-2017 | #6


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось sergeybutakov, 10-03-2017 в 15:20.


Отправлено: 15:00, 10-03-2017 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


постоянно будет колошматить, проверять пинг и наличие процесса, как только не будет пинга, а при этом нужный процесс тоже не будет работать, на моем коде выскочить слово "удаляем":
Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:17, 10-03-2017 | #8


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо большое за помощь!

Отправлено: 18:26, 10-03-2017 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Выполнение следующей команды, после завершения определенного процесса Weterok Скриптовые языки администрирования Windows 23 18-11-2015 13:58
CMD/BAT - Выполнение команды, если в файле логов пинга повторяются строки VarseKc Скриптовые языки администрирования Windows 2 07-12-2014 15:59
Загрузка - [решено] Выполнение сценариев завершения работы The_Immortal Microsoft Windows 2000/XP 1 05-09-2012 17:38
.NET - Ожидание завершения процесса Efsey Программирование и базы данных 11 24-11-2010 19:16
CMD/BAT - [решено] Как сдедать выполнение команды только после выполнения куска кода? Ingolder Скриптовые языки администрирования Windows 8 01-09-2010 22:52




 
Переход