В настоящее время я работаю на заводе, который в основном использует сеть управления на основе ethe rnet, предназначенную для всего оборудования автоматизации. Чтобы сэкономить время, я создал пакетный файл для каждой системы на заводе, чтобы иметь возможность быстро изменять IP-адрес моего компьютера, когда я нахожусь в разных частях завода. Я создал этот каталог пакетных файлов и разместил их на нашем сервере, чтобы наши специалисты по обслуживанию могли получить к ним доступ. Хотя это работает хорошо, мне пришло в голову, что если несколько человек попытаются go онлайн таким образом, в сети будут конфликтовать IP-адреса.
Я попытался изменить свой пакетный файл (ы) для первого эхо-запроса IP-адреса (10.120.194.254), затем, в зависимости от результата, либо измените IPv4 «Подключение по локальной сети» на этот IP-адрес, либо перейдите к следующему доступному IP-адресу (10.120.194.253) ... (10.120.194.252) )... и так далее. Моя идеальная цель - выполнить ту же процедуру для 5 IP-адресов, а затем, если все они окажутся неудачными, отобразить диалоговое окно, в котором отображается сообщение для проверки количества пользователей в сети. Обычно IP-адреса xxx.xxx.xxx.250-254 используются для программирования в сети, поэтому это и есть причина. Вероятность того, что в сети будет такое количество пользователей, мала, но было бы неплохо иметь эту функцию «на всякий случай».
Ниже приведен мой код исходного командного файла для изменения IP-адреса для IPv4 «Подключение по локальной сети».
@echo off
netsh interface IPv4 set address name="Local Area Connection" static 10.120.194.254 255.255.255.0
@echo off
netsh interface IPv4 set dns name="Local Area Connection" source=dhcp
Я попытался использовать функцию уровня ошибок, но не смог получить согласованные результаты при проверке связи с сетью. Кроме того, каждый раз, когда я пингую адрес, он опрашивает 4 раза, а затем переходит к следующему. Есть ли способ сократить время опроса? Ниже приведен мой код для командного файла, который я пытался заставить работать:
@echo off
ping "10.120.194.254"
IF %errorlevel%==0 GOTO IP_Attempt2
@echo off
netsh interface IPv4 set address name="Local Area Connection" static 10.120.194.254 255.255.255.0
@echo off
netsh interface IPv4 set dns name="Local Area Connection" source=dhcp
exit /b
:IP_Attempt2
ping "10.120.194.253"
IF %errorlevel%==0 GOTO IP_Attempt3
@echo off
netsh interface IPv4 set address name="Local Area Connection" static 10.120.194.253 255.255.255.0
@echo off
netsh interface IPv4 set dns name="Local Area Connection" source=dhcp
exit /b
:IP_Attempt3
ping "10.120.194.252"
IF %errorlevel%==0 GOTO IP_Attempt4
@echo off
netsh interface IPv4 set address name="Local Area Connection" static 10.120.194.252 255.255.255.0
@echo off
netsh interface IPv4 set dns name="Local Area Connection" source=dhcp
exit /b
:IP_Attempt4
ping "10.120.194.251"
IF %errorlevel%==0 GOTO IP_Attempt5
@echo off
netsh interface IPv4 set address name="Local Area Connection" static 10.120.194.251 255.255.255.0
@echo off
netsh interface IPv4 set dns name="Local Area Connection" source=dhcp
exit /b
:IP_Attempt5
ping "10.120.194.250"
IF %errorlevel%==0 GOTO Max_IP_Attempts
@echo off
netsh interface IPv4 set address name="Local Area Connection" static 10.120.194.250 255.255.255.0
@echo off
netsh interface IPv4 set dns name="Local Area Connection" source=dhcp
exit /b
:Max_IP_Attempts
echo Max attempts have been made with this batch file. Verify users on the network.
pause
exit /b
Я прикрепил снимок окна подсказки CMD после запуска командного файла: