У меня есть скрипт, который делает что-то вроде

setx %PATH% %PATH%;%ANOTHER_VAR%

echo %PATH%

Когда я повторяю путь, он не включает% ANOTHER_VAR%. Есть ли способ убедиться, что новые переменные отражаются во второй раз, когда я эхо% PATH%

РЕДАКТИРОВАТЬ: я пишу сценарий кукольный, который вызывает 2 отдельные команды exec. Первый вызывает setx для переменной. Так как второй доступен в новой команде exec, я ожидаю, что он будет иметь доступ к вновь установленной переменной, но это не так.

Я также попытался просто создать переменную в script1 и получить доступ к ней из script2, но она недоступна (как и ожидалось).

1 ответ1

1

Насколько я понимаю, setx устанавливает переменную через реестр (см. Эту статью). Требуется запуск новой командной оболочки, чтобы увидеть результаты.

Если вы хотите изменить настройку пути в текущем сеансе команды, используйте set path=%path%;%another_variable% .

В ответ на комментарий это от setx /?:

ПРИМЕЧАНИЕ: 1) SETX записывает переменные в основную среду в реестре.

2) В локальной системе переменные, созданные или измененные этим инструментом, будут доступны в будущих окнах команд, но не в текущем окне команд CMD.exe.

Если вы хотите изменить переменную в текущем сеансе команды, используйте обычный SET.

Ниже приведен вывод из моей системы:

C:\Windows\system32>set path2=%cd%

C:\Windows\system32>set path2
path2=C:\Windows\system32

C:\Windows\system32>cd drivers

C:\Windows\System32\drivers>set path2=%path2%;%cd%

C:\Windows\System32\drivers>set path2
path2=C:\Windows\system32;C:\Windows\System32\drivers

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .