treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

プロキシ設定バッチを用意してみた

「プロキシ設定をワンタッチで切り替える方法ってないっすか?」
こういう質問を受けました。
バッチファイルを作成しましたのでご報告します。

発端

もともとの発端は
「InternetExplorerでいいのですが、プロキシ設定を変更するバッチを作れますか?」
っていう質問から始まりました。
詳しく聞いていくと、以下2つのシチュエーションで使うことがあるようです。

■プロキシを使う環境

  1. LANにプロキシサーバを使用するをチェック
  2. アドレスポートを設定
  3. ローカルアドレスにはプロキシサーバを使用しないをチェック(アドレスも指定)

■プロキシを使わない環境

  1. LANにプロキシサーバを使用するのチェックを外す
    ※設定は書き換えなくてOK

これをバッチか選択式にして、簡単に実行できるようにしたい、というのが要望です。いちいちinetcpl.cplでプロキシ設定画面を開いてプロキシ設定を入れたり消したりしたくない、というのが動機のようです。
対象はノートPCが1台だけなので、それほど大がかりな仕掛けは必要なくて、バッチファイルでON/OFFができればよさそうなところです。

バッチファイル

早速バッチファイルです。
※免責※動作の保証はいたしかねます。ご利用は自己責任で。

*******ここから*****************************************
@echo off
:startmenu
set NUM=
set Rtry=
rem 環境に併せて以下の変数を設定します。
set PROXYIPaddr=192.168.0.1
set PORT=8080
set IntraAddr=*.hoge.co.jp;<local>
CLS
echo ----------------メニュー----------------
echo [1] プロキシの設定を有効化
echo [2] プロキシ設定を無効化
echo [3] インターネット(IE)プロパティの起動
echo [4] この処理を終了する
echo -----------------------------------------
set /p NUM="実行する処理が記載された番号を入力してください >"
if "%NUM%"=="1" goto addproxy
if "%NUM%"=="2" goto delproxy
if "%NUM%"=="3" goto inetcpl
if "%NUM%"=="4" goto endMsg
goto NoNumber

:addproxy
echo 現在のユーザ %USERNAME% のプロキシ設定に値を入力します。
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d %PROXYIPaddr%:%PORT%
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyOverride /t reg_sz /d "%IntraAddr%"
rem 確認=都度都度設定値を確認するのなら以下コマンドを有効化する
rem inetcpl.cpl
echo 入力が完了しました。
pause
goto end

:delproxy
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0
rem 確認=都度都度設定値を確認するのなら以下コマンドを有効化する
rem inetcpl.cpl
echo 入力が完了しました。
pause
goto end

:inetcpl
echo 設定画面が同期実行しますので、設定画面を閉じてから本画面に戻ってください。
inetcpl.cpl
goto end

:NoNumber
echo その番号はメニューにありません。
echo ...
pause
goto startmenu

:end
rem もう一度処理をするかどうか確認し、処理しない場合終了します。
echo --------------------------------------------------------------
echo 別のプロキシ関連処理を実行するには[Y]を
set /p Rtry="処理を終了するには[N]を入力しEnterキーを押下します。 >"
if /i %Rtry% == y (goto startmenu)
if /i %Rtry% == n (goto endMsg)
goto endMsg
:endMsg
goto endMsg
:endMsg
set NUM=
set Rtry=
set PROXYIPaddr=
set PORT=
set IntraAddr=
echo %0 の動作が完了しました。

*******ここまで*****************************************

簡単な動作の説明

まず、変数を用意します。「PROXYIPaddr=」箇所のIPアドレスをプロキシのアドレスに書き換えます。「PORT=」でプロキシポートを指定します。「IntraAddr=」は除外するローカルアドレス、つまり例外欄の「次で始まるアドレスにはプロキシを使用しない」欄に入力するエントリを記述します。

これだ記述したら後は実行するだけ。
「[1] プロキシの設定を有効化」を選択すれば、用意したプロキシ設定が入力されて、「[2] プロキシ設定を無効化」を入力すればプロキシ設定がOFFになり、「[3] インターネット(IE)プロパティの起動」を選択れば、確認のためいつものGUI画面が表示されます。

必要なのはこれくらいかなぁ、どうでしょ?

「OKです。完璧です。このバッチで充分です。」


Mission Complete。