Как стать автором
Обновить

Изменяем сетевые параметры Windows с помощью netsh+batch

Года полтора назад была у меня такая рутинная работа: приходя на работу – вводить IP-адрес, маску, шлюз, DNS для Ethernet-порта ноутбука, а приходя домой – менять все эти параметры на другие. Первое время я мирился, но длилось это недолго – ну как можно каждый день делать одно и то же!? Тогда и вышел я на след Windows-утилиты netsh, которая, вкупе с batch-файлом дала возможность делать то же самое, но гораздо (!) быстрее и удобнее (используя стандартные средства Windows и всего один текстовый файл).

image

Здесь утилита netsh уже была немного описана, но я предлагаю другую реализацию, возможности которой будут более гибкими.

Netsh


Итак, поигравшись с netsh на Windows 7 (для Windows XP синтаксис немного меняется) я обнаружил, что можно присвоить интерфейсу (в приведенном ниже примере — интерфейсу под названием «LAN») IP-адрес, маску и шлюз с помощью команды:

netsh interface ipv4 set address name="LAN" static 10.253.0.35 255.255.255.192 10.253.0.7

Команды, понятное дело, вводятся в командной строке Windows. Если параметры отказываются изменяться — запускаем cmd от имени администратора.

Если понадобится добавить еще один IP-адрес, то используем:

netsh interface ipv4 add address name="LAN" address=192.168.2.4 255.255.255.0

Две следующие команды очищают список DNS-серверов и выставляют IP-адрес 212.154.163.162 первым в списке DNS-серверов:

netsh interface ipv4 set dnsserver "LAN" static none
netsh interface ipv4 add dns "LAN" 212.154.163.162 1

Чтобы предоставить возможность назначения сетевых параметров DHCP-серверу используем:

netsh interface ipv4 set address name="LAN" source=dhcp
netsh interface ipv4 set dns name="LAN" source=dhcp

Ну и для отображения текущих параметров можно использовать:

netsh interface ipv4 show ipaddresses "LAN" normal
netsh interface ipv4 show dnsservers "LAN"


Batch-файлы


На этом закончим наше знакомство с netsh и перейдем к batch-файлами Windows (текстовый файл с расширением «bat»), который позволяет не только автоматизировать ввод длинных команд (в том числе и netsh-комманд), но также поможет сделать этот процесс более интересным, интерактивным и не заставит нас использовать для каждого варианта настроек отдельный файл.

Для вывода на экран используется команда «ECHO» (она будет использоваться для вывода своеобразного меню):

ECHO 1 LAN DHCP

Для вывода сообщения и запроса ввода от пользователя используем «SET»:

set /p choice=Enter the number of your choice: 

Для условного перехода к метке воспользуемся связкой «IF» и «GOTO» (если кто знает, можно ли использовать Case — буду рад упростить итоговый скрипт):

if '%choice%'=='1' goto one

Для обозначения метки (в нашем случае метки «one») используется двоеточие:

:one


Итого


На этом можно закончить и торжественно сообщить, что Вы знаете все, что нужно для того, чтобы полностью разобраться в итоговом batch-файле (есть комментарии на русском языке) и переделать его под себя. Вот ссылка на страничку гугл-проекта QNet (сделал по аналогии с Yet Another Net Switcher — спасибо автору, раньше этим не пользовался). Ах да, комментарии в batch-файлах начинаются с «rem».

P.S. Теперь ни на работе, ни дома этим скриптом почти не пользуюсь (есть DHCP), но в командировках — по-прежнему очень удобная вещь.

P.P.S. С русскоязычным названием «Подключение по локальной сети» скрипт может и не сработать, но я давно привык именовать сетевые карты как «LAN» и «WLAN».
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.