Страница 1 из 1
BAT файл на выключение компов
Добавлено: 2015-10-01 8:57:32
Reken
Здравствуйте
Подскажите пожалуйста в решении следующей проблемы...
Есть "сетка" из компов, около 10 компов + сервак. Хочется реализовать задачу, что бы все компы в сети выключались на ночь. Сервак работает круглосуточно...
На серваке сделал BAT файл, содержание такое...
Код: Выделить всё
shutdown /s /f /m \\192.168.99.10
shutdown /s /f /m \\192.168.99.8
и т.д.
Когда допустим комп 192.168.99.10 включен, то BAT файл запущенный с сервака отрабатывает на отлично (выключает комп 192.168.99.10). Но вот если комп 192.168.99.10 уже выключен, а я запускаю BAT файл, то батник зависает, и до следующих строк (компов) не доходит, а просто висит...
Можно как то реализовать, что бы компы которые уже выключены, BAT файл пропускал их, и выключал только те которые включены?
BAT файл на выключение компов
Добавлено: 2015-10-01 10:02:14
snorlov
Сделайте проверку живущий ли комп хотя бы на пинг или на присуствие административных ресурсов типа C$, ADMIN$
В приведенном коде надо исключить сервера и активные приборы
Код: Выделить всё
set /A mp=1
set MSK_IP=192.168.99.
:start_bat
if %mp%==255 goto exit_bat
set m_ip=%MSK_IP%%mp%
rem if exist \\%m_ip%\c$ goto COMP_FOUND
ping -n 1 %m_ip% | find /I "TTL" > nul
if %ERRORLEVEL%==0 goto COMP_FOUND
:COMP_NOT_FOUND
goto EXIT_SEARCH_COMP
:COMP_FOUND
shutdown /s /f /m \\%m_ip%
:EXIT_SEARCH_FREE
set /A mp=%mp%+1
goto start_bat
:exit_bat
BAT файл на выключение компов
Добавлено: 2015-10-01 10:13:05
Reken
Snorlov спасибо
Теперь попробую разобраться, в выше указанных строках батника...
BAT файл на выключение компов
Добавлено: 2015-10-01 10:25:51
snorlov
Reken писал(а):Snorlov спасибо
Теперь попробую разобраться, в выше указанных строках батника...
А что тут разбираться, идет сканирование сетки начиная с .1 до .254 с приращением 1
Виндовые компы лучше проверять по ресурсам c$, поскольку файеры на них могут быть включены и на пинг они могут не ответить, т.е. задействовать
Код: Выделить всё
rem ping -n 1 %m_ip% | find /I "TTL" > nul
rem if %ERRORLEVEL%==0 goto COMP_FOUND
if exist \\%m_ip%\c$ goto COMP_FOUND
Правда и административные ресурсы тоже могут быть отключены...
BAT файл на выключение компов
Добавлено: 2015-10-01 10:46:07
Reken
snorlov писал(а):поскольку файеры на них могут быть включены
Нет, они точно выключены...
Reken писал(а):Теперь попробую разобраться
Я имел ввиду, разобраться куда именно в батнике прописать серваки, что бы они за компанию не выключились)) (то есть исключить их...)
BAT файл на выключение компов
Добавлено: 2015-10-01 10:50:10
snorlov
Проще простого
Код: Выделить всё
:start_bat
rem пропуск
if %mp%==12 (set /A mp=%mp%+1 )
if %mp%==24 (set /A mp=%mp%+1 )
if %mp%==255 goto exit_bat
BAT файл на выключение компов
Добавлено: 2015-10-01 15:23:57
Reken
snorlov писал(а):Проще простого
snorlov писал(а):rem пропуск
Вместо слова "пропуск" должен быть адрес компа?
BAT файл на выключение компов
Добавлено: 2015-10-01 15:48:15
snorlov
пропускаем 192.168.99.12 и 192.168.99.24
BAT файл на выключение компов
Добавлено: 2015-10-01 15:55:52
Reken
snorlov писал(а):пропускаем 192.168.99.12 и 192.168.99.24
Получается, готовый BAT должен выглядеть так:? (если пропускаем 192.168.99.12 и 192.168.99.24)
Код: Выделить всё
set /A mp=1
set MSK_IP=192.168.99.
:start_bat
rem
if %mp%==12 (set /A mp=%mp%+1 )
if %mp%==24 (set /A mp=%mp%+1 )
set m_ip=%MSK_IP%%mp%
rem if exist \\%m_ip%\c$ goto COMP_FOUND
ping -n 1 %m_ip% | find /I "TTL" > nul
if %ERRORLEVEL%==0 goto COMP_FOUND
:COMP_NOT_FOUND
goto EXIT_SEARCH_COMP
:COMP_FOUND
shutdown /s /f /m \\%m_ip%
:EXIT_SEARCH_FREE
set /A mp=%mp%+1
goto start_bat
:exit_bat
BAT файл на выключение компов
Добавлено: 2015-10-01 16:09:23
snorlov
Именно, а строчку
можно убрать, если используете только ping
Код: Выделить всё
ping -n 1 %m_ip% | find /I "TTL" > nul
if %ERRORLEVEL%==0 goto COMP_FOUND
а можно вообще все вместе
Код: Выделить всё
if exist \\%m_ip%\c$ goto COMP_FOUND
ping -n 1 %m_ip% | find /I "TTL" > nul
if %ERRORLEVEL%==0 goto COMP_FOUND
BAT файл на выключение компов
Добавлено: 2015-10-01 16:27:35
Reken
Спасибо Snorlov