blackmane
01-08-2012, 10:44
Доброе утро!
Мне нужно на 120 ПК включить службу сообщений (одноранговая сеть), решил сделать батник с использованием утилит Русимовича, но видно где то допустил ошибку:
for /l %%i in (50,1,248) do (
echo PC: 192.168.1.%%i
rem Определение доступности узла
rem errorlevel=1 - узел не доступен
rem errorlevel=0 - узел доступен
ping -n 1 192.168.1.%%i | find /I "TTL=" || echo PC: 192.168.1.%%i %ERRORLEVEL%^=1 >>%OUTPUTOFF%
echo PC: 192.168.1.%%i >>%OUTPUT%
rem Определение доступности узла на уровне PsTools
rem errorlevel <> 0 - узел не доступен
rem errorlevel=0 - узел доступен
psservice \\192.168.1.%%i -u %login% -p %pass% query Messenger >>%OUTPUT%
if %errorlevel%=="0" goto service
:service
echo PC: 192.168.1.%%i >>%OUTPUTAUTO%
rem переключение службы в автоматический режим
psservice \\192.168.1.%%i -u %login% -p %pass% SETCONFIG Messenger auto >>%OUTPUTAUTO%
rem запуск службы
psservice \\192.168.1.%%i -u %login% -p %pass% start Messenger >>%OUTPUTSTART%
echo PC: 192.168.1.%%i %errorlevel% >>%OUTPUTSTART%
)
errorlevel возвращает 0:
Недоступные узлы:
PC: 192.168.1.50 0=1
PC: 192.168.1.55 0=1
PC: 192.168.1.56 0=1
PC: 192.168.1.58 0=1
PC: 192.168.1.59 0=1
Доступные узлы:
PC: 192.168.1.51 0=0
PC: 192.168.1.52 0=0
PC: 192.168.1.53 0=0
PC: 192.168.1.54 0=0
PC: 192.168.1.238 0=0
Если я в конце 6 строки ставлю ")" - он завершает цикл на этой строке во всех случаях.
Если я вместо
#6 ping -n 1 192.168.1.%%i | find /I "TTL=" || echo PC: 192.168.1.%%i %ERRORLEVEL%^=1 >>%OUTPUTOFF%
ставлю
#6 ping -n 1 192.168.1.%%i | find /I "TTL=" || goto end
...
#20 :end
#21 echo PC: 192.168.1.%%i %ERRORLEVEL%^=1 >>%OUTPUTOFF%
#22 ) rem завершение цикла
То он на первом же пинге (узел заведомо недоступен) завершает батник, а в файл лога записывает:
PC: 192.168.1.%i 1=1
Я не могу найти ошибку ((((((
Мне нужно на 120 ПК включить службу сообщений (одноранговая сеть), решил сделать батник с использованием утилит Русимовича, но видно где то допустил ошибку:
for /l %%i in (50,1,248) do (
echo PC: 192.168.1.%%i
rem Определение доступности узла
rem errorlevel=1 - узел не доступен
rem errorlevel=0 - узел доступен
ping -n 1 192.168.1.%%i | find /I "TTL=" || echo PC: 192.168.1.%%i %ERRORLEVEL%^=1 >>%OUTPUTOFF%
echo PC: 192.168.1.%%i >>%OUTPUT%
rem Определение доступности узла на уровне PsTools
rem errorlevel <> 0 - узел не доступен
rem errorlevel=0 - узел доступен
psservice \\192.168.1.%%i -u %login% -p %pass% query Messenger >>%OUTPUT%
if %errorlevel%=="0" goto service
:service
echo PC: 192.168.1.%%i >>%OUTPUTAUTO%
rem переключение службы в автоматический режим
psservice \\192.168.1.%%i -u %login% -p %pass% SETCONFIG Messenger auto >>%OUTPUTAUTO%
rem запуск службы
psservice \\192.168.1.%%i -u %login% -p %pass% start Messenger >>%OUTPUTSTART%
echo PC: 192.168.1.%%i %errorlevel% >>%OUTPUTSTART%
)
errorlevel возвращает 0:
Недоступные узлы:
PC: 192.168.1.50 0=1
PC: 192.168.1.55 0=1
PC: 192.168.1.56 0=1
PC: 192.168.1.58 0=1
PC: 192.168.1.59 0=1
Доступные узлы:
PC: 192.168.1.51 0=0
PC: 192.168.1.52 0=0
PC: 192.168.1.53 0=0
PC: 192.168.1.54 0=0
PC: 192.168.1.238 0=0
Если я в конце 6 строки ставлю ")" - он завершает цикл на этой строке во всех случаях.
Если я вместо
#6 ping -n 1 192.168.1.%%i | find /I "TTL=" || echo PC: 192.168.1.%%i %ERRORLEVEL%^=1 >>%OUTPUTOFF%
ставлю
#6 ping -n 1 192.168.1.%%i | find /I "TTL=" || goto end
...
#20 :end
#21 echo PC: 192.168.1.%%i %ERRORLEVEL%^=1 >>%OUTPUTOFF%
#22 ) rem завершение цикла
То он на первом же пинге (узел заведомо недоступен) завершает батник, а в файл лога записывает:
PC: 192.168.1.%i 1=1
Я не могу найти ошибку ((((((