Изначально скрипт взят откуда-то из сети, модифицировал немного под себя (извините за кривой инглиш):
@ECHO OFF
:: Variables (set IFACE name as in your adapter settings name)
SET IFACE="Ethernet"
SET IP=192.168.0.10
SET IPD=DHCP
SET MASK=255.255.255.0
SET GATEWAY=192.168.0.1
SET GWMETRIC=1
SET DNS1=8.8.8.8
SET DNS2=77.88.8.8
:: Script
SET /P settings="Choose option (1 - STATIC, 2 - DHCP): "
ECHO Current option - %settings%
IF %settings% EQU 1 (GOTO STATIC) ELSE (IF %settings% EQU 2 (GOTO DHCP) ELSE (GOTO WRONG))
:WRONG
ECHO WRONG OPTION!
GOTO QUIT
:STATIC
ECHO Current choosen network settings:
ECHO IP-address: %IP%
ECHO Network mask: %MASK%
ECHO Gateway: %GATEWAY%
netsh interface ip set address %IFACE% static %IP% %MASK% %GATEWAY% %GWMETRIC%
ECHO Primary DNS server: %DNS1%
netsh interface ip set dns %IFACE% static %DNS1% validate=no
ECHO Secondary DNS server: %DNS2%
netsh interface ip add dns %IFACE% %DNS2% index=2 validate=no
GOTO IPSHOWQ
:DHCP
ECHO Current choosen network settings: === %IPD% ===
netsh interface ip set address %IFACE% %IPD%
netsh interface ip set dns %IFACE% %IPD%
GOTO IPSHOWQ
:IPSHOWQ
SET /P IPINFO="Show network configuration? (y - YES, n - NO): "
IF %IPINFO% NEQ y GOTO QUIT
:IPSHOW
::ipconfig /all
netsh interface ip show addresses name=%IFACE%
netsh interface ip show dns name=%IFACE%
:QUIT
ECHO Bye-bye!
pause
И он, вроде бы, работает, но с причудами: настройки меняются только при подключенном физически кабеле, что не совсем то что нужно в данном случае. Без кабеля, скрипт отрабатывает как надо, но настройки остаются прежними (если судить по выводу ipconfig /all или через интерфейс "Сведения" в "Свойствах адаптера").
Что не так и как победить чтобы настройки менялись без подключенной витухи?
UPD: Вывод этих команд в консоли:
netsh interface ip show addresses name=%IFACE%
netsh interface ip show dns name=%IFACE%
Всегда показывает изменения в настройках ДНС-серверов, но настройки IP остаются старыми.
P.S. Метрику в данном случае, как я понимаю, вообще не имело смысла указывать, но я оставил как было в изначальном скрипте.