デバッグ時にバッチファイルで固定IPとDHCPを切り替える
最近の大学や会社のネットワーク環境はパソコンがDHCP設定なのが普通だと思います。ただ、ネットワークのプログラミングが必要な場合、自分のパソコンに固定IPアドレスを設定しなければならないケースがあります。
その際に、いちいち「コントロールパネル」から「ネットワークと共有センター」を開いて「IPv4」のプロパティを変更するのが非常に面倒です。いったい何アクションあるんでしょうかね。(まぁパソコンを普通に使う分は、そんなところいじることはないので... )
DOSプロンプトで netsh コマンドを発行してやれば一瞬ですが、文字列の引数などをいちいち打ち込むのが面倒です。おそらく、まちがいなく一度で実行できることはないでしょう。そこで、このページの後半に示す bat ファイルで対応します。
バッチのユーザ定義の内部変数である %NETNAME% は、Fig. 1 に示すダイアログで確認してください。
この例では全角カタカナの「イーサネット」です。昔のOSでは「ローカル エリア接続」でした。ローカル、と、エリア、の間には半角空白が含まれています。まぎらわしいですね。
バッチファイルは、かならず「管理者として実行」してください。
文字コードは、かならず Shift-JIS にしてください。
改行コードは、かならず CRLF にしてください。
ping による開通確認は適切なファイアウォール設定をしておかないとハマります。
@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