Страница 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 спасибо :good:
Теперь попробую разобраться, в выше указанных строках батника...

BAT файл на выключение компов

Добавлено: 2015-10-01 10:25:51
snorlov
Reken писал(а):Snorlov спасибо :good:
Теперь попробую разобраться, в выше указанных строках батника...
А что тут разбираться, идет сканирование сетки начиная с .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
Именно, а строчку

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

rem if exist \\%m_ip%\c$  goto COMP_FOUND
можно убрать, если используете только 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