WSHで環境変数を操作する

setx.exeが全く使い物にならない為、WSHによる実行が最適だという判断に至り、作成しました。

【WindowsXPのsetx.exeを入手する方法】
1.Windows XP Service Pack 2 サポート ツールからWindowsXP-KB838079-SupportTools-ENU.exeを
  ダウンロードする。(Windows正規品チェックが必要)
2.WindowsXP-KB838079-SupportTools-ENU.exeを、WinRARなどの解凍ツールを使って解凍する。
3.解凍されたファイルにsuptools.msiというのがあるので、msiexecコマンドでsuptools.msiを解凍する。
  msiexec /a suptools.msi targetdir="C:\hoge" /qn
  ※targetdirは、解凍先ディレクトリを指定する。
4.解凍されたファイル群に、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で操作しましょう。
バッチから呼び出せば済む話です。
環境変数設定スクリプト

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です