デバッグ時にバッチファイルで固定IPとDHCPを切り替える

最近の大学や会社のネットワーク環境はパソコンがDHCP設定なのが普通だと思います。ただ、ネットワークのプログラミングが必要な場合、自分のパソコンに固定IPアドレスを設定しなければならないケースがあります。

その際に、いちいち「コントロールパネル」から「ネットワークと共有センター」を開いて「IPv4」のプロパティを変更するのが非常に面倒です。いったい何アクションあるんでしょうかね。(まぁパソコンを普通に使う分は、そんなところいじることはないので... )

DOSプロンプトで netsh コマンドを発行してやれば一瞬ですが、文字列の引数などをいちいち打ち込むのが面倒です。おそらく、まちがいなく一度で実行できることはないでしょう。そこで、このページの後半に示す bat ファイルで対応します。

バッチのユーザ定義の内部変数である %NETNAME% は、Fig. 1 に示すダイアログで確認してください。

Fig. 1 ネットワークと共有センターの設定ダイアログ

この例では全角カタカナの「イーサネット」です。昔のOSでは「ローカル エリア接続」でした。ローカル、と、エリア、の間には半角空白が含まれています。まぎらわしいですね。

@echo off
set /P INP="固定IP(f)、DHCP(d)のどちらにしますか?( f or d )"

rem 最近のOSではこうなっている場合が多いです.
set NETNAME="イーサネット"

rem 昔のOSではこういう文字列でした.
rem set NETNAME="ローカル エリア接続"

rem これはユーザ定義の成功文字列
set SUC=設定変更に成功しました.

rem これはユーザ定義のエラーメッセージ文字列.
set ERR=エラー、f または d 以外は受け付けません.

rem -------------------------------------------------------------------

if /i %INP%==d goto LABEL_DHCP
if /i %INP%==f goto LABEL_FIX

echo you push %INP%
echo %ERR%
pause
exit

rem -------------------------------------------------------------------
:LABEL_DHCP

netsh interface ip set address name=%NETNAME% source=dhcp

echo you push %INP%
echo %SUC%
pause
exit

rem -------------------------------------------------------------------
:LABEL_FIX

rem 下記をネット環境に応じて変更する.
set IP_ADDRESS="192.168.0.30"

rem 下記をネット環境に応じて変更する.
set MASK="255.255.255.0"

rem 下記をネット環境に応じて変更する.
set GW_ADDRESS="192.168.0.254"

rem 下記をネット環境に応じて変更する.
set DNS_ADDRESS="192.168.0.30"

rem アイピーアドレスを設定する.
netsh interface ip set address name=%NETNAME% source=static addr=%IP_ADDRESS% mask=%MASK% gateway=%GW_ADDRESS%

rem ドメインネームサーバアドレスを設定する(アドレスが適切でない場合は時間がかかるが設定自体はできる).
rem パソコンとパソコンの1:1のローカルLAN通信の場合は設定する必要なし.
netsh interface ip set dnsserver name=%NETNAME% source=static addr=%DNS_ADDRESS%

echo you push %INP%
echo %SUC%
pause
exit

rem -------------------------------------------------------------------

ネットワーク設定が適切に変更されたか確認するには下記のDOSコマンドをご利用ください。

ipconfig

詳細なネットワーク設定を知るには /all オプションを追加してください。

ipconfig /all