1. ホーム
  2. windows

[解決済み] Windowsのコマンドプロンプトから環境変数を更新するコマンドはありますか?

2022-03-17 13:53:18

質問

環境変数を変更したり追加したりすると、コマンドプロンプトを再起動しなければなりません。 CMDを再起動せずにこれを実行するコマンドはありますか?

解決方法を教えてください。

vbsスクリプトでシステム環境変数を取り込むことはできますが、実際に現在の環境変数を変更するにはbatスクリプトが必要なので、これを組み合わせて解決します。

という名前のファイルを作成します。 resetvars.vbs このコードを含んで、パスに保存してください。

Set oShell = WScript.CreateObject("WScript.Shell")
filename = oShell.ExpandEnvironmentStrings("%TEMP%\resetvars.bat")
Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set oFile = objFileSystem.CreateTextFile(filename, TRUE)

set oEnv=oShell.Environment("System")
for each sitem in oEnv 
    oFile.WriteLine("SET " & sitem)
next
path = oEnv("PATH")

set oEnv=oShell.Environment("User")
for each sitem in oEnv 
    oFile.WriteLine("SET " & sitem)
next

path = path & ";" & oEnv("PATH")
oFile.WriteLine("SET PATH=" & path)
oFile.Close

このコードを含む別のファイル名resetvars.batを、同じ場所に作成します。

@echo off
%~dp0resetvars.vbs
call "%TEMP%\resetvars.bat"

環境変数を更新したい場合は、以下のように実行するだけです。 resetvars.bat


アポロジクス :

この解決策を考えるにあたって、私が抱いた主な問題は次の2つです。

a. vbsスクリプトからコマンドプロンプトに戻して環境変数をエクスポートする簡単な方法が見つからなかったので

b. 環境変数 PATH は、ユーザーとシステムの PATH 変数を連結したものです。

ユーザーとシステムの間で競合する変数についての一般的なルールがよくわからないので、特別に扱われるPATH変数を除いて、ユーザーがシステムを優先するように選択しました。

vbsから変数をエクスポートする際の問題を回避するために、奇妙なvbs+bat+temporary batのメカニズムを使用しています。

備考 : このスクリプトは、変数を削除しません。

これはおそらく改善されるでしょう。

追加された

あるcmdウィンドウから別のウィンドウに環境をエクスポートする必要がある場合、このスクリプトを使用します(仮に exportvars.vbs ):

Set oShell = WScript.CreateObject("WScript.Shell")
filename = oShell.ExpandEnvironmentStrings("%TEMP%\resetvars.bat")
Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set oFile = objFileSystem.CreateTextFile(filename, TRUE)

set oEnv=oShell.Environment("Process")
for each sitem in oEnv 
    oFile.WriteLine("SET " & sitem)
next
oFile.Close

実行 exportvars.vbs をエクスポートしたいウィンドウで から をエクスポートしたいウィンドウに切り替えてください。 とタイプしてください。

"%TEMP%\resetvars.bat"