Windows における環境変数の設定スクリプト

Windows で環境変数を設定するとき、「スタートメニュー」→「PC」の項目を右クリック→「プロパティ」→コントロールパネルの「システム」が開く→「システムの詳細設定」を選ぶ→「詳細」タブ→「環境変数」ボタンを押下、と選択して「環境変数」ウィンドウを出してアレコレ設定するのは面倒臭い

ということでコマンドプロンプトで設定する方法を調べた。Set コマンドで変数を宣言するのと同様のやり方で、Setx というコマンドを使うと環境変数を設定できるようだ。以下のように書く。

Rem 環境変数 JAVA_HOME を新規登録する
Setx JAVA_HOME "C:\JDK"

Rem 環境変数 PATH に「C:\Hoge\bin」を追加する
Setx PATH "%PATH%;C:\Hoge\bin"

やり方自体はこれで良いのだが、コマンドプロンプトの制約により、「警告: 保存されたデータは 1024 文字に切り捨てられました。」と表示され、登録される環境変数が1024文字で千切れてしまうことがある。「PATH」なんかはいくつも設定したりすると思うので、1024文字なんてあっという間に達してしまう。

それじゃ別の方法は、というと、VBScript (WSH) でも登録できるようだ。

Dim shell
Set shell = WScript.CreateObject("WScript.Shell")

' ユーザ環境変数を参照する
Dim env
Set env = shell.Environment("USER")

' 環境変数 JAVA_HOME を新規登録する
env.item("JAVA_HOME") = "C:\JDK"

' 環境変数 PATH に「C:\Hoge\bin」を追加する
env.item("PATH") = env.item("PATH") & ";" & "C:\Hoge\bin"

' 登録内容を参照するときも env#item() で OK
MsgBox env.item("PATH")

やり方としてはこんな感じ。"USER" でユーザ環境変数、"SYSTEM" でシステム環境変数を参照・設定できる。

こちらは1024文字制限がない。VBScript ならコマンドプロンプトよりは楽に書けると思うので、事前に変数の内容を確認したりするスクリプトを書いておけば、チームで同じ設定にしたいとかいう需要にも対応できるだろう。