スクリプトが存在するディレクトリを ユーザ環境変数の PATH へ登録します。もし、システム環境変数またはユーザ環境変数に既に同じパスがあれば登録しません。登録位置は、PATH 環境変数文字列の一番最後になります 登録直後、cmd.exe で PATH の内容を見ても反映されないので、最後にエクスプローラを再起動しています。
<JOB> <OBJECT id="WshShell" progid="WScript.Shell" /> <OBJECT id="WshNetwork" progid="WScript.Network" /> <OBJECT id="Fso" progid="Scripting.FileSystemObject" /> <SCRIPT language="VBScript"> strTitle = "スクリプトが存在するディレクトリをユーザPATH環境変数に登録" ' ************************************** ' PC 名と ユーザ名を取得 ' ************************************** strUser = WshNetwork.UserName strMachine = WshNetwork.ComputerName ' ************************************** ' スクリプトが存在するディレクトリを取得 ' ************************************** strScriptPath = WScript.ScriptFullName Set obj = Fso.GetFile( strScriptPath ) Set obj = obj.ParentFolder strScriptPath = obj.Path ' ************************************** ' WMI ' ************************************** Set obj = GetObject("winmgmts:\\.\root\cimv2") ' ************************************** ' システム環境変数のチェック ' ************************************** strValue = "" Set objItems = obj.ExecQuery _ ("select * from Win32_Environment where SystemVariable = True and Name = 'PATH'") For Each objItem in objItems strValue = objItem.VariableValue Next if strValue <> "" then aData = Split( strValue, ";" ) For I = 0 to Ubound( aData ) if UCase(aData(I)) = UCase(strScriptPath) then Call Msgbox( "システム環境変数に既に登録されています", 0, strTitle ) Wscript.Quit end if Next end if ' ************************************** ' ユーザ環境変数のチェック ' ************************************** strValue = "" Set objItems = obj.ExecQuery _ ("select * from Win32_Environment where SystemVariable = False and Name = 'PATH'") For Each objItem in objItems if Ucase( objItem.UserName ) = Ucase(strMachine & "\" & strUser) then strValue = objItem.VariableValue end if Next if strValue <> "" then aData = Split( strValue, ";" ) For I = 0 to Ubound( aData ) if UCase(aData(I)) = UCase(strScriptPath) then Call Msgbox( "ユーザ環境変数に既に登録されています", 0, strTitle ) Wscript.Quit end if Next end if ' ************************************** ' ユーザ環境変数を登録 ' ************************************** strValue = strValue & ";" & strScriptPath Set objEnv = obj.Get("Win32_Environment").SpawnInstance_ objEnv.Name = "PATH" objEnv.UserName = strMachine & "\" & strUser objEnv.VariableValue = strValue objEnv.Put_ ' ************************************** ' エクスプローラを再起動 ' ( ※ 登録されたパスを有効にします ) ' ************************************** Set colProcessList = obj.ExecQuery _ ("Select * from Win32_Process Where Name = 'explorer.exe'") For Each objProcess in colProcessList on error resume next objProcess.Terminate() on error goto 0 Next ' 少し待ちます Wscript.Sleep(500) Call WshShell.Run( "explorer.exe" ) ' ************************************** ' 終了確認 ' ************************************** Wscript.Echo "処理が終了しました" </SCRIPT> </JOB>
元となった Hey, Scripting Guy! スクリプトを使用して環境変数を作成することはできますか
|
【VBScriptの最新記事】
- 【VBS】WshShell.Runによる外部プログラムの実行のバリエーションと注意事項
- VBScript で GUID 生成
- Windows 標準の CDO.Message で(GmailまたはYahoo!メールを使って)簡単にバッチ処理からメールを送る
- バックアップスクリプトを作るスクリプト
- バッチ処理の為の .wsf スケルトン / cscript.exe での実行を強制する / 自分自身の呼び出し
- 【VBS + Excel】シンプルな詳細設計書のフォーマット。1) Excel のダウンロード、2) VBScript で作成するサンプル
- VBScript : CAPICOM を使った通常文字列の Base64エンコードと SHA1 と MD5 と SHA256/384/512
- 【VBS汎用】SHIFT_JISデータを各種キャラクタセットのテキストファイルへ変換
- VBScript : デスクトップの列挙
- Excel シートから Basp21 を使用してメールの送受信をして、今後の何かに役立てる
- VBScript + clipコマンド + レジストリ登録で、エクスプローラのディレクトリの右クリックでファイル名のリストをクリップボードにコピーできるようにする
- VBScript(WMI) : OSの情報をコマンドプロンプトに一覧で表示する
- VBScript(WMI) : 共有一覧
- IE のお気に入りディレクトリにあるファイルの表示・非表示を設定する / HTA(HTML アプリケーション)
- VBScript : ディレクトリ内のディレクトリで使用している容量一覧
- VBScript(WMI) : システム環境変数の変更を監視する event_change_reg.wsf
- XMLファイルの書き換え (VBScript)
- VBScript から実行する PHPコードの PDF処理のサンプル
- Cscript.exe の引数と、Windows Script Host を無効にするレジストリ設定
- Access.Application ( docmd.TransferText ) でエクスポートとインポート