NETSHコマンドで表示されるIPアドレスの情報を変数に入れて命令を分岐させるバッチファイルのメモ。
現在のIPアドレスを取得して命令を分けたい
バッチファイルでPCをメンテナンスする際、メンテナンスするPCが属しているネットワークの系統別に命令を分岐したいなと思うことがあったのでチャレンジしてみました。それには現在のIPアドレスがどうなっているのか調べ、その値を変数に入れ、IF文で分岐する必要があります。
まずはNETSHコマンドで表示される値を確認
コマンドプロンプトで以下のコマンドと打って Enter を押すと現在のIPアドレスが表示されます。ここで表示されるIPアドレスを変数に入れたいと思います。
Windows 10 の場合
netsh interface ipv4 show address "イーサネット"
Windows 7 の場合
Windows 7 の場合は "イーサネット" の部分を "ローカル エリア接続" に変更しないと表示されません。
netsh interface ipv4 show address "ローカル エリア接続"
それでもうまく表示されない場合は "ローカル エリア接続" の部分を削除して実行して接続名を確認し、表示された接続名に書き直して再度実行してみてください。
netsh interface ipv4 show address
"IP アドレス" の部分だけ表示したいとき
netsh interface ipv4 show address "イーサネット" | find "IP アドレス"
Windows 7 の場合は "イーサネット" の部分を "ローカル エリア接続" に変更しないと表示されません。
IPアドレスを変数に入れて命令を分岐するバッチファイル例
もし、取得したIPアドレスが「192.168.」から始まるアドレスかどうかで命令を分岐するバッチファイルの例です。
Windows 10 や Windows 7 で異なるインターフェースの構成が "イーサネット" か "ローカル エリア接続" のどちらになっているかも判別するのも加えているので、どちらのOSでも使えるバッチファイルになっています。
@echo off rem #遅延環境変数 setlocal enabledelayedexpansion rem #インターフェースの構成が"イーサネット"か調べる for /f "tokens=1,2* usebackq delims=^:" %%i in (`netsh interface ipv4 show address ^| findstr "イーサネット"`) do @set INTERFACE="イーサネット" rem #インターフェースの構成が"ローカル エリア接続"か調べる for /f "tokens=1,2* usebackq delims=^:" %%i in (`netsh interface ipv4 show address ^| findstr "ローカル エリア接続"`) do @set INTERFACE="ローカル エリア接続" if !INTERFACE! == "イーサネット" ( goto SearchIP ) else if !INTERFACE! == "ローカル エリア接続" ( goto SearchIP ) goto Unknown :SearchIP rem #IPアドレスを調べる for /f "tokens=1,2* usebackq delims=^:" %%i in (`netsh interface ipv4 show address !INTERFACE! ^| findstr "IP アドレス" ^| findstr /n /r "."`) do @set IP=%%k rem #取得したIPアドレス前後のスペースを削除 call :Trim %IP% rem #192.168.から始まるIPアドレスか判別 echo. echo %IP% | findstr /B 192.168. > nul if %ERRORLEVEL% equ 0 ( echo IPアドレスは%IP%です。 ) else ( echo 192.168.から始まるIPアドレスではありません。 ) echo. goto End :Unknown echo. echo インターフェースの構成名が不明です。 echo. :End endlocal pause exit :Trim set IP=%*
実行してみた結果
ちゃんとIF文で分岐した命令の通り、変数に格納されたIPアドレスが表示できました。
Windows 10 の場合
Windows 7 の場合
IPCONFIGコマンドを使った参考ページ
以下のページではIPCONFIGコマンドで取得したIPアドレスを変数に入れる方法を掲載しています。