setx.exeが全く使い物にならない為、WSHによる実行が最適だという判断に至り、作成しました。
WindowsXPのsetx.exeを入手する方法
- Windows XP Service Pack 2 サポート ツールからWindowsXP-KB838079-SupportTools-ENU.exeをダウンロードする。(Windows正規品チェックが必要)
- WindowsXP-KB838079-SupportTools-ENU.exeを、WinRARなどの解凍ツールを使って解凍する。
- 解凍されたファイルにsuptools.msiというのがあるので、msiexecコマンドでsuptools.msiを解凍する。
msiexec /a suptools.msi targetdir="C:\hoge" /qn
※targetdirは、解凍先ディレクトリを指定する。 - 解凍されたファイル群に、setx.exeがあるので、必要な場所へコピーする。
恒久的に利用したい場合は、C:\Windows\System32など、環境変数PATHが通っている場所へ置く。
使い方
ユーザー環境変数を設定したい場合
setx 変数名 値
システム環境変数を設定したい場合
setx 変数名 値 -m
Windows7のsetx.exeとの違い
システム環境変数を指定するパラメータなどの指定方法が異なる。
WindowsXP用だと、ハイフンで指定するのに対し、Windows7用のだとスラッシュで指定する。
大文字/小文字も違う。
WindowsXP用 setx 変数名 値 -m
Windows7用 setx 変数名 値 /M
setx.exeが使い物にならない理由
- 値が1024文字を超える環境変数を設定することができない。(超過分は切り捨てられる)
- 値が「\」で終わると正しくコマンドが実行されない。(ユーザー環境変数におかしな値で設定される)
- バッチで実行するが故に、環境変数名の値が全て展開される。
例えば、元々PATHには%SYSTEMROOT%と登録されている状態で、setx PATH %PATH% -mとすると、設定される値はC:\Windowsになる。
WSHがいい理由
- WindowsXPの場合、Windows7の場合と、切り分けて動作させる必要がない。
- setx.exeでダメな部分が全て解消される。
- わざわざバッチ処理だけにこだわらなくても動作する。(WindowsXP SP3, 7×86, 7×64で確認済み)
ということで、環境変数はWSHで操作しましょう。
バッチから呼び出せば済む話です。
環境変数設定スクリプト