shotnの心の無垢ままに

主にプログラミングなどのIT関連の記事を心の向くままに書いていくブログです。

Windowsの無線LANアダプタを有効/無効を変更するバッチを作成する

今回は趣向を変えてWindows環境でのお話です。

バッチを作成しようと思った背景

仕事上ではもっぱらWindowsを使用しており、今までは有線のLANしか使えない環境にいました。(セキュリティとか申請とかの関係)

しかし、最近になって必要だろうということで無線LANを使えるようにしてもらいましたが、この無線が厄介で無線をしようとしたあとに席に戻って有線に切り替えたつもりが、「あれ?全然つながらないな・・・」と思ったらいつまでもつながっており少し困っていました。

LANの優先順位を変えたりもしてみたのですが、うまくいかないので「有効/無効」を切り替えることで対応することにしました。

しかし、コンパネ開くの遅い、無線切れてるか確認するのも面倒ということでバッチを作って対応することにしました。

要件は以下の感じ。


<要件> 1. 無線の有効/無効は1つのバッチで管理する

  1. 有効の場合は無効に、有効の場合は無効にする

1. 状態を確認できるようにし、その結果を確認した上で有効/無効の切り替えを選べるようにする。

というわけで以下のように作成してみました。

@echo off

rem 実行環境に移動
cd %~dp0

rem == 定数設定 ===================================

set LOG_FILE=netsh.log
set WIRELESS="ワイヤレス"
set LAN_ON="有効"
set LAN_ON_MSG="無線は有効でした。無効にする場合は[y|Y]を入力してください。:"
set LAN_OFF="無効"
set LAN_OFF_MSG="無線は無効でした。有効にする場合は[y|Y]を入力してください。:"
set LAN_NAME="ワイヤレス ネットワーク接続"
set RESULT_MSG_ON=無線LANの設定を無効にしました。
set RESULT_MSG_OFF=無線LANの設定を有効にしました。

rem ===============================================

set RET=0

rem = 処理開始 ====================================
rem インタフェースの状態を取得
netsh interface show interface > %LOG_FILE%

rem 取得した状態を1行ずつ処理する(%%a:有効/無効、%%b:ローカル/ワイヤレス)
for /f "tokens=1,4" %%a in (%LOG_FILE%) do (

    rem 有効なのが無線なら無線を無効にする
    if "%%b" == %WIRELESS% (

        rem 状態の有効/無効を判定
        if "%%a" == %LAN_ON% (
            set RET=1
            set /P INPT_STR=%LAN_ON_MSG%
            goto break
        )
        
        if "%%a" == %LAN_OFF% (
            set RET=2
            set /P INPT_STR=%LAN_OFF_MSG%
            goto break
        )
    )
)


:break

rem Yが入力された場合はyに変換する
if %INPT_STR% == Y SET INPT_STR=y

rem 続行する場合のみ、無線の設定を切り替える
if %INPT_STR% == y (
    if %RET% == 1 (
       netsh int set int %LAN_NAME% disable
       echo %RESULT_MSG_ON%
    )
    
    if %RET% == 2 (
       netsh int set int %LAN_NAME% enable
       echo %RESULT_MSG_OFF%
    )
)

rem 使用したファイルを削除する
del /F/Q %LOG_FILE%

pause

exit /b 0

環境に応じて設定値を変更する必要はあるかと思いますが、よかったら使ってみてください。