リモートワークの際に、ネットワーク環境が社外⇔社内と交互に切り替えることがあります。

その際に、Git のグローバル設定で手動でプロキシを追加したり、外したりする必要があります。

作業自体は簡単ですが、さすがに毎回行うのは面倒くさいので自動化する方法を作成しました。

前提条件

  • OS 環境:Windows10~11

Git proxy 切り替えスクリプト作成

まずは社内 or 社外環境を判定し、Git 設定を変更する BAT スクリプトを作成します。

@echo off
setlocal
 
:: proxy server に ping を送る
ping -n 1 -w 500 proxy_server >nul
 
:: ping 結果でgit proxy ON or OFF を設定する
if errorlevel 1 (
    echo Unset global proxy
    git config --global http.proxy ""
) else (
    echo Set global proxy
    git config --global http.proxy http://user:password@proxy_server:port
)
 

スクリプトのタスク化

つぎに、Windows のタスクスケジューラーを使用して、作成した BAT ファイルを 5 分ごとに実行するように設定します。

  1. 「スタート」メニューを開き、「タスクスケジューラー」を検索して開きます。
  2. 「アクション」メニューから「新しいタスクの作成」を選択します。
  3. 「名前」フィールドにタスクの名前を入力し、「説明」フィールドにタスクの説明を入力します(オプション)。次に、「次へ」をクリックします。
  4. 「トリガー」画面で、「毎日」を選択し、「次へ」をクリックします。
  5. 「毎日」画面で、「繰り返し間隔」フィールドに「5 分」に設定し、「継続期間」を無制限にし、「次へ」をクリックします。
  6. 「アクション」画面で、「プログラムの開始」を選択し、「次へ」をクリックします。
  7. 「プログラムの開始」画面で、「プログラム/スクリプト」フィールドに BAT ファイルのフルパスを入力します。次に、「次へ」をクリックします。
  8. 「完了」画面で設定を確認し、「完了」をクリックします。

追記

定期的に実行されるため、バッチのコンソールウィンドウが表示されてしまい、作業の気が散ります。 対策として VBS を用いてバックグラウンド実行するようにします。

以下の VBScript を作成して、タスクスケジューラーの引数に BAT ファイルを指定することで、コンソール画面が前面に現れることを回避できます。

Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c " & Wscript.Arguments(0), vbhide

まとめ

たかが 1~2 分の簡単な作業でも塵積って山となることもあるので、自動化が可能ならどんどん自動化をしてしまおう。

Written-By-Human-Not-By-AI-Badge-white