Можно получить системные переменные с 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
Апологетика :
Эти две основных проблемы у меня было предложение этого решения, были
a. я не мог найти простой способ экспортировать переменные среды из vbs сценария назад к командной строке, и
b. переменная окружения PATH является конкатенацией пользователя и системных переменных ПУТИ.
я не уверен, что общее правило для конфликтующих переменных между пользователем и системой, таким образом, я выбрал делать пользовательскую систему переопределения, кроме переменной ПУТИ, которая обрабатывается конкретно.
я использую странный vbs+bat+temporary bat механизм для работы вокруг проблемы экспорта переменных от vbs.
Примечание : этот сценарий не удаляет переменные.
Это может, вероятно, быть улучшено.
ДОБАВИЛ
, Если необходимо экспортировать среду от одного 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
в окне Вы хотите экспортировать от [1 128], затем переключиться на окно, которое Вы хотите экспортировать в [1 129], и тип:
"%TEMP%\resetvars.bat"
Это зависит от использования вами пользовательских тегов - некоторые теги, например те, которые создают раскрывающийся список параметров, намного проще использовать и читать, чем эквивалентный тег цикла c: foreach. Однако JSTL распространен во многих приложениях, поэтому, если вы перестанете использовать настраиваемые теги struts в другом веб-приложении, вы, вероятно, все равно будете иметь доступ к JSTL.
Просто: