筆休め
Windows のバッチファイルでネットワークアダプタの有効無効を切り替える

なんだかレガシーな感じの記事ですが、最近社内の DNS 事情のため、有線 LAN のネットワークアダプタの有効無効を切り替えることがよくあります。

まぁ、ネットワーク接続 (ncpa.cpl) で開いて、右クリックから「無効にする」あるいは「有効にする」を選ぶだけ、といえばだけなのですが、それすらも面倒なのが、職業病です。

ということで 1 工程でも減らすべく、バッチファイルでネットワークアダプタの有効無効を切り替えてみます。

バッチファイルの作成

といっても難しいこともあまりないので、さくっといきましょう。

適当なフォルダに新しいテキストファイルを作りswitch-netif.bat とでも名付けます。名前はなんでもかまいません。拡張子を .bat にするのをお忘れなく。

できたファイルを右クリックして「編集」などからエディタを開き、下記のソースをコピペして保存します。

@ECHO OFF
ECHO %~1
netsh interface show interface "%~1" | findstr "有効">%TEMP%\dock_interface_status.txt
set /P x=<%TEMP%\dock_interface_status.txt

IF "%x%" EQU "" (
  ECHO 有効化しています...
  netsh interface set interface "%~1" enabled
) ELSE (
  ECHO 無効化しています...
  netsh interface set interface "%~1" disabled
)
IF ERRORLEVEL 1 PAUSE

ソースコードは見てのとおり、 netsh コマンドを叩いていっているだけです。

  1. netsh interface show interface で指定した名前のインターフェイスの情報を取得し、"有効" という文字列がある行を検索して一時ファイルに書き出し
  2. 一時ファイルの内容を変数に格納
  3. 変数の内容がなければ(無効なとき)有効化、変数の内容があれば("有効" なとき)無効化する

処理は上記だけなので簡単ですね。言語設定が日本語でないときは findstr の検索文字列を "Enabled" とかに変える必要があるかもしれません。

このバッチファイルは ネットワークアダプタの名前を引数として渡す ようにしてあるので、ショートカットを作成して引数を渡すようにします。

ショートカットの作成

さきほど作ったバッチファイルを ドラッグして、デスクトップなどにドロップし、コンテキストメニューから 「ショートカットをここに作成」 を選択します。

ショートカットができるので、またファイル名を好きなものに変更します。今回は「Dock」という名前のネットワークアダプタを切り替えたいので、「Dock 有効無効切り替え」としました。

ショートカットを右クリックしてプロパティを開き、「リンク先」でバッチファイル名の後にスペースを空けてネットワークアダプタ名を追加(ここでは Dock)します。

ついでにその下の「詳細設定...」から詳細プロパティを開き、「管理者として実行」にチェックをいれておきます。
(ネットワークアダプタの切り替えには管理者権限が必要なため)

さらについでに「アイコンの変更」からクリックしたくなるようなアイコンに変更しておきましょう(オプション)

アイコンリソースは %SystemRoot%\System32\imageres.dll%SystemRoot%\System32\setupapi.dll あたりがおすすめです。

作成したショートカットをダブルクリックするか、右クリックから 「管理者として実行」 を選んで実行します。

UAC の確認が表示されますが、気にせず実行すればネットワークアダプタの有効・無効が切り替わるはずです。

補足: ネットワークアダプタ名にスペースが含まれる場合

Windows なので (?) イーサネット 4 のようにネットワークアダプタ名にスペースが含まれる場合があります。

この場合、単純にショートカットに "イーサネット 4" のように書いてもうまく引数が渡せず、動作しません。

ネットワークアダプタ名にスペースが含まれる場合は cmd.exe の /c オプションで実行するように「リンク先」を書き換えてください。

cmd.exe /c C:\Softwares\switch-netif\switch-netif.bat "イーサネット 4"

誰かのお役に立てれば幸いです。

おすすめの記事