如果修改或添加环境变量,则必须重新启动命令提示符。我是否可以执行一个无需重启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
道歉:
我提出此解决方案的两个主要问题是
一种。我找不到将vbs脚本中的环境变量导出回命令提示符的简单方法,并且
b。PATH环境变量是用户和系统PATH变量的串联。
我不确定用户和系统之间的变量冲突的一般规则是什么,因此我选择使用户覆盖系统,但专门处理的PATH变量除外。
我使用奇怪的vbs + bat + tempor bat机制来解决从vbs导出变量的问题。
注意:此脚本不会删除变量。
这可能可以改善。
添加
如果您需要将环境从一个cmd窗口导出到另一个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"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句