Ниже приведена команда пакетного файла, которую я сейчас использую для выключения удаленных компьютеров через сеть LAN.

Вот что он делает.

  1. Я указал IP-адрес удаленного компьютера в текстовом файле с именем list.txt
  2. Я добавил IP как 0.0.0.0 внизу всех IP-адресов удаленных компьютеров.
  3. Приведенный ниже пакетный файл проверит, доступны ли компьютеры по локальной сети.
  4. Если компьютер доступен, он выключит удаленный компьютер, иначе он перейдет к следующему IP.
  5. Когда пакетный файл, наконец, прочитает 0.0.0.0, он автоматически выключит главный компьютер.

Моя проблема в том, что я не могу запустить этот пакет для более чем 7 удаленных компьютеров. Если я добавлю более 7 IP-адресов удаленных ПК в list.txt, пакетный файл зависнет, и действие не будет завершено. Пожалуйста, дайте мне знать, если я сделал какую-либо ошибку в коде или как я могу исправить эту проблему.

Я хочу запустить этот пакетный файл для минимум 12 удаленных ПК

@echo off
setlocal enableextensions enabledelayedexpansion
for /f %%a in (C:\Users\calcopm\Desktop\list.txt) do (
SET IP =%%a
SET C=0
IF %%a equ 0.0.0.0 (
shutdown /s
) ELSE (
ping -n 1 %%a | find "TTL=" >NUL: && SET C=1
IF !C! equ 1 (
psshutdown \\%%a
) else (
ECHO REMOTE %%a IS NOT REACHABLE
)
)
)

2 ответа2

0

Я изменил свой скрипт, как показано ниже, и преобразовал из BAT в EXE с помощью приложения

@echo off
setlocal enableextensions enabledelayedexpansion
for /f %%a in (C:\Users\calcopm\Desktop\list.txt) do (
IF %%a equ 0.0.0.0 (
shutdown /s
) ELSE (
ping -n 1 -w 100
IF errorlevel 1 (
ECHO REMOTE %%a IS NOT REACHABLE
) else (
psshutdown \\%%a
)
)
)

Тем не менее я столкнулся с той же проблемой. Поскольку я выполнял сценарии с использованием exe-файла (преобразованного с использованием BAT в EXE), я выполнял с использованием BAT-файла, все было в порядке.Затем я понял, что конвертер BAt в EXE имеет некоторые проблемы, которые влияют на файл EXE.

Затем я преобразовал BAT в EXE с другим приложением, и он работал как шарм.

Я решил проблему ATLAST !!!!!!!!!!!!! уф !!!!!

0

Введение таймера задержки между проверкой состояния одной машины на другой машине решило бы проблему.

Надеюсь, что обнаружение состояния машины в сети и прохождение команды выключения могут выполняться за доли секунды, и переход к следующей машине в течение более короткого периода времени может вызвать проблему. Следовательно, предлагаем вам ввести временную задержку в цикл IF & ELSE и продолжить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .