Как получить значение после использования 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.
Другие вопросы по тегам