WSHで環境変数のPATHに値を追加する

wshで環境変数のUserのPATHに値を追加したかったので、調べてみたらここがそれっぽいんだけど、

WSHで環境変数を設定する

http://www.atmarkit.co.jp/fwin2k/win2ktips/460envset/envset.html

ここで紹介されてるwsfファイルをWindows 7(32bit)環境で動かすと、UserにSystem側のPathまで全部追加されてしまった。

ExpandEnvironmentStrings(“%Path%”) を使うと全ての設定されてるパスをとってきてしまうらしい。 なので

objEnv=objShell.Environment(“USER”) としといて
objEnv.Item(“path”) で取得すればUserの環境変数だけが取得できるのでこっちを使うと多分良い。 WSHを普段全く触らないからホントに良いのかよくわからないけども、とりあえずうちの環境では下のコードを foo.wsf の名前で utf8n で保存してダブルクリックしたらPATHの値が更新された。

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<package>
  <job id="environment">
  <?job error="true" debug="true" ?>
  <object id="objFs" progid="Scripting.FileSystemObject" />
    <script language="VBScript">
      <![CDATA[
        Set objShell=WScript.CreateObject("WScript.Shell")
        Set objEnv=objShell.Environment("USER")
        objEnv.Item("path")=objEnv.Item("path") & ";" & "C:\hoge\bin"
      ]]>
    </script>
  </job>
</package>

重複確認なんて全くしてないので何個でも追加されるので注意してください。