@Kypidon4ik
Фрилансер, Wordpress developer

Ошибка в bat скрипте который изменяет протокол ip версии 4 (tcp/IPv4), как исправить?

Имеется скрипт
@echo on
setlocal enabledelayedexpansion

rem Set variable for network interface name
set interface_name=Ethernet
rem Get the local IP address of the computer
for /f "tokens=2 delims=: " %%i in ('ipconfig ^| find /i "IPv4-адрес" ^| find /i "%interface_name%"') do (
    set ip_address=%%i
)
rem Set variables for other IPv4 settings
set subnet_mask=255.255.254.0
set gateway=192.168.100.123

rem Set variables for DNS settings
set dns1=8.8.8.8
set dns2=8.8.4.4

rem Execute netsh commands to change the settings
netsh interface ip set address name="%interface_name%" static !ip_address! %subnet_mask% %gateway%
netsh interface ip set dns name="%interface_name%" static %dns1%
netsh interface ip add dns name="%interface_name%" %dns2% index=2

echo Successfully configured IP Address: !ip_address!, Subnet Mask: %subnet_mask%, Gateway: %gateway%, DNS1: %dns1%, DNS2: %dns2%

pause


Проблема в получении локального ip адреса (он остается пустым) почему -то, в чем может быть проблема ?
PS Также пишет Недопустимый параметр mask (192.168.100.123).
  • Вопрос задан
  • 90 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Проблема элементарная
ipconfig ^| find /i "IPv4-адрес" ^| find /i "%interface_name%"

Здесь вы сначала выбираете все строки, содержащие подстроку "IPv4-адрес", а потом среди них пытаетесь найти строки, содержащие "%interface_name%". Но таких строк просто-напросто нет.
Ответ написан
@Kypidon4ik Автор вопроса
Фрилансер, Wordpress developer
@echo on
setlocal enabledelayedexpansion
rem Set variable for network interface name
set interface_name=Ethernet
rem Get the local IP address of the computer
for /f "tokens=13 delims=: " %%i in ('ipconfig ^| find /i "IPv4-Адрес" ') do (
if "%%i" neq "" (
set ip_adress=%%i
)
)

rem Set variables for other IPv4 settings
set subnet_mask=255.255.252.0
set gateway=192.168.1.252

rem Set variables for DNS settings
set dns1=192.168.0.100
set dns2=192.168.0.42

rem Execute netsh commands to change the settings
netsh interface ip set address name="%interface_name%" source=static address=%ip_adress% mask=%subnet_mask% gateway=%gateway%
netsh interface ip set dns name="%interface_name%" static %dns1%
netsh interface ip add dns name="%interface_name%" %dns2% index=2

echo Successfully configured IP Address: %ip_adress%, Subnet Mask: %subnet_mask%, Gateway: %gateway%, DNS1: %dns1%, DNS2: %dns2%

pause

Полностью рабочий код, проблема была в кодировке файла (поставил OEM 866) и в цикле тоже
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы