Как получить значение после использования setx?
Мне нужно сохранить значение (отметку времени) и извлечь его позже в пакетных файлах. Поэтому я искал ответы на вопросы о том, как хранить постоянные переменные, и нашел setx.
Я использовал это так:
C:\tmp>setx TIME_VAR %time%
SUCCESS: Specified value was saved.
Но когда я пытаюсь напечатать его с помощью echo, его там нет:
C:\tmp>echo TIME_VAR
TIME_VAR
C:\tmp>echo %TIME_VAR%
%TIME_VAR%
Как мне получить сохраненное значение?
3 ответа
Из документа (setx /?
)
Поскольку SETX записывает переменные в основную среду в реестре, изменения вступают в силу только при открытии нового командного окна - они не влияют на текущий сеанс CMD или PowerShell.
setx _here_ %CD%\170901017-01
for /f "tokens=3 delims=^ " %%i in ('reg query HKCU\Environment ^| findstr /i /c:"_here_"') do (
set _my_set_x_var_=%%i
set _here_=%%i
)
echo/ local and next session = = = =
echo/ "%_my_set_x_var_%"
echo/ local and next session = = = =
echo/ "%_here_%"
:eof
результат:
local and next session = = = =
'C:\Users\admin\Desktop\Res_Folder_7z\test\170901017-01"
local and next session = = = =
"C:\Users\admin\Desktop\Res_Folder_7z\test\170901017-01"
in same session and also in next
Я использовал графический интерфейс «Редактировать системные переменные среды» в разделе «Переменные среды...» для просмотра и удаления записей, которые я установил с помощью setx. Таким образом я также смог убедиться, что setx действительно обновляет переменные.
Взгляните на эти две темы:
Я не смог просмотреть значения ни в cmd , ни в powershell с помощью этой команды:
echo %GOPROXY%
%GOPROXY%
В моем случае двоичный файл эха указывает на:
which echo
/usr/bin/echo
И это не та же команда, что описана в
man echo
Я предполагаю, что это пришло с установкой git.
Для меня предложенный setx/? тоже не получилось:
setx GOPROXY ""
ERROR: Invalid syntax.
Type "SETX /?" for usage.