社内ネットワークが中規模になると、MACアドレスでDHCPで固定IPアドレスを配布するのが一般的かと思いますが、ネットワーク周りを外部に委託していてかつ、自社の責任範囲ではMACアドレスでDHCPで固定IPアドレスを配布することができない時に、このバッチファイルが役に立つと思います。
バッチファイル条件
- ネットワーク・インターフェースに割り当てられているIdx番号かインターフェースの名前を入力するとそのネットワーク・インターフェースを設定します。
- 管理者権限無しで起動すると強制的に管理者権限に昇格するようにしています。
- 例では第3オクテットで拠点のIPアドレスが異なる場合を想定して作成しています。
- たぶんどの条件でも動きます。
- バッチファイルを保存する際は必ずANSIかShift JISで保存してください。
- それで保存しないと文字化けしてしまい正常に動作しない可能性があります。
- バッチファイル内でパラメーターを使用しています。
- 任意で変えていただくと簡単にどの環境でも固定IPを設定することができます。
IPアドレスを固定にするバッチファイル
動作イメージ
![](https://www.kanapon.me/wp-content/uploads/2024/05/6a2da8814432b7e595269c0431ce1faf-800x550.png)
バッチファイル内容
@echo off
rem 管理者権限強制昇格
cd /d %~dp0
openfiles > nul
if "%1"=="" (
set arg=
) else (
set arg= -ArgumentList "%1"
)
if errorlevel 1 (
PowerShell.exe -Command Start-Process \"%~f0\"%arg% -Verb runas
exit
)
echo ネットワーク設定を実行します。
echo;
rem インターフェース名表示
echo ネットワーク・インターフェース一覧
netsh int ip show int
rem インターフェース指定
set Interface=
set /p Interface=設定するインターフェース名を指定してください。(Idx or name):
setlocal enabledelayedexpansion
echo;
rem 拠点指定
set base=
set /p base=拠点は?(拠点A=1 拠点B=2 拠点C=3 拠点D=4 拠点E=5):
echo;
rem 拠点指定セカンダリーDNS変数格納
rem 一部拠点でDNSサーバが異なる時に使ってください。
if "%base%"=="1" (
set dns_sec=192.168.1.2
) else (
set dns_sec=192.168.%base%.252
)
rem PC端末のIPアドレス指定
set IP_addr=
set /p IP_addr=IPアドレスを指定してください。:
rem 実行前最終確認画面
echo;
echo 設定インターフェース:%Interface%
echo IPアドレス:%IP_addr%
echo サブネットマスク:255.255.255.0
echo デフォルトゲートウェイ:192.168.%base%.254
echo プライマリーDNS:192.168.%base%.253
echo セカンダリーDNS:%dns_sec%
echo;
set net_config=
set /p net_config=上記の通り設定します。よろしいですか?(Y=YES / N=NO):
if /i "%net_config%"=="y" (
rem IPアドレスの設定
netsh interface ipv4 set addr name="%Interface%" source=static addr="%IP_addr%" mask="255.255.255.0" gateway="192.168.%base%.254"
rem プライマリーDNSサーバの設定
netsh interface ipv4 set dns name="%Interface%" source=static addr="192.168.%base%.253" register=primary validate=no
rem セカンダリーDNSサーバの設定
netsh interface ipv4 add dns name="%Interface%" addr="%dns_sec%" index=2 validate=no
rem NAS上で動作できるようにIPアドレスを変更してから再接続までの待機時間を10秒設定しています。
timeout /nobreak 10 > /null
) else (
echo 設定をキャンセルしました。
goto net_config_end
)
echo ネットワーク設定が完了しました。
:net_config_end
pause
DHCPにする設定
動作イメージ
![](https://www.kanapon.me/wp-content/uploads/2024/05/875fe077b975deb4a6ac1c67a8ba82e3-800x444.png)
バッチファイル
@echo off
rem 管理者権限強制昇格
cd /d %~dp0
openfiles > nul
if "%1"=="" (
set arg=
) else (
set arg= -ArgumentList "%1"
)
if errorlevel 1 (
PowerShell.exe -Command Start-Process \"%~f0\"%arg% -Verb runas
exit
)
rem インターフェース名表示
echo ネットワーク・インターフェース一覧
netsh int ip show int
set Interface=
set /p Interface=設定するインターフェース名を指定してください。(Idx or name):
echo 設定インターフェース:%Interface%
set /p net_config=上記のインターフェースをDHCPに設定します。よろしいですか?(Y=YES / N=NO):
if /i "%net_config%"=="y" (
netsh interface ipv4 set add name="%Interface%" source=dhcp
netsh interface ipv4 set dnsservers name="%Interface%" source=dhcp
timeout /nobreak 5 > /null
) else (
echo 設定をキャンセルしました。
goto net_config_end
)
echo ネットワーク設定が完了しました。
echo DHCPに設定しました。
:net_config_end
pause
この記事が役に立ったと思ったらなにかいただけると嬉しいです。
ブログランキングクリックお願いします!
コメント