⚙️

WindowsのIP設定をサッと切り替える

2021/09/10に公開

概要

WindowsPCのキッティング作業などに使用できる
イーサネット、Wi-FiのIP設定をサッと切り替えるバッチを紹介する。
ちょっとだけIPの設定をいじりたいときに便利。

pc_ipv4_set.bat

pc_ipv4_set.bat
@echo off
setlocal enabledelayedexpansion

::管理者権限で実行しなかった場合、自動昇格する
whoami /priv | find "SeDebugPrivilege" > nul
if %errorlevel% neq 0 (
    echo 管理者権限が無いため、管理者権限で実行します
    pause
    @powershell start-process "%~0" -verb runas
    exit

)

::設定対象の入力
set /p CONF="IP設定対象を入力して下さい(eth/wifi):"

if %CONF%==eth (
    set CONF=イーサネット

) else if %CONF%==wifi (
    set CONF=Wi-Fi

) else (
    echo ===== error:「eth」or「wifi」を入力してください =====
    pause
    exit

)

::読み込むIP情報ファイルの入力
set /p FILE="使用するIP情報ファイル名を入力して下さい。(.txt不要):"

set n=0
for /f %%s in (%~dp0.\address\%FILE%.txt) do (
    set ADDRESS[!n!]=%%s
    set /a n=n+1

)


::IPアドレスのセット
set IP=%ADDRESS[0]%
::ネットマスクのセット
set MASK=%ADDRESS[1]%
::ゲートウェイのセット
set GATE=%ADDRESS[2]%
::DNS(プライマリ)のセット
set DNS1=%ADDRESS[3]%


::IPv4設定
netsh interface ipv4 set address ^
name=%CONF% ^
source=static ^
address="%IP%" ^
mask="%MASK%" ^
gateway="%GATE%"
netsh interface ipv4 set dns ^
name=%CONF% ^
source=static ^
address="%DNS1%" ^
register=non ^
validate=no

::以下オプション「セカンダリDNS、メトリック」
@REM ::DNS(セカンダリ)のセット
@REM set DNS2=%ADDRESS[4]%

@REM netsh interface ipv4 add dns ^
@REM name=%CONF% ^
@REM address="%DNS2%" ^
@REM index=2 ^
@REM validate=no

@REM netsh interface ipv4 set interface ^
@REM  interface=%CONF% ^
@REM  metric="25"


::終了時出力
echo ===== 固定IP設定 終了 =====
netsh interface ip show config name=%CONF%
pause

pc_dhcp_set.bat

pc_dhcp_set.bat
@echo off

::管理者権限で実行しなかった場合、自動昇格する
whoami /priv | find "SeDebugPrivilege" > nul
if %errorlevel% neq 0 (
    echo 管理者権限が無いため、管理者権限で実行します
    pause
    @powershell start-process "%~0" -verb runas
    exit

)


::設定対象の入力
set /p CONF="設定対象を入力して下さい(eth/wifi):"

if %CONF%==eth (
    set CONF=イーサネット

) else if %CONF%==wifi (
    set CONF=Wi-Fi

) else (
    echo ===== error:「eth」or「wifi」を入力してください =====
    pause
    exit

)


::DHCP設定
netsh interface ipv4 set address name=%CONF% source=dhcp
netsh interface ipv4 set dnsservers name=%CONF% source=dhcp


::終了時出力
echo ===== DHCP設定 終了 =====
netsh interface ip show config name=%CONF%
pause

使い方

1. 以下のようなフォルダ構成にする

.
├── address
│   ├── hogehoge.txt
│   ┆
│   └── hugahuga.txt
├── pc_dhcp_set.bat
└── pc_ipv4_set.bat

2. address フォルダに設定したいIP情報ファイル名を作成する

hogehoge.txt
172.31.141.150     <--IPアドレス
255.255.0.0     <--サブネットマスク
172.31.141.254     <--デフォルトゲートウェイ
172.31.141.254     <--優先DNSサーバー
(172.31.141.253)   <--代替DNSサーバー(あってもなくても良い)

3. pc_ipv4_set.bat を実行する

4. pc_dhcp_set.bat を実行する

補足

  • バッチはフォルダ構成さえ守れば、ほとんどのパス上において正常に動作する。
  • pc_ipv4_set.bat::以下オプション「セカンダリDNS、メトリック」 以下のコメントを外して
    代替DNSサーバーの設定やメトリックの設定も行うことができる。
  • IP設定対象のNICを増やしたい場合は、「イーサネット、Wi-Fi」のような
    NIC名のif分岐を作成すると増やすことが可能。

参考

https://correct-log.com/bat_auto_admin/

https://www.projectgroup.info/tips/Windows/cmd_0012.html

Discussion