使用setx后如何检索值?

时间:2014-06-05 11:43:08

标签: windows batch-file

我需要存储一个值(时间戳),然后在批处理文件中检索它。所以我搜索了SO以获取有关如何存储持久变量并找到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%

如何检索我的储值?

2 个答案:

答案 0 :(得分:6)

来自doc(setx /?

  

因为SETX将变量写入主环境中   注册表,编辑只会在新的命令窗口生效时生效   打开 - 它们不会影响当前的CMD或PowerShell会话。

答案 1 :(得分:1)

  

使用setx后,您无需等待重新启动或进入新的实例/会话即可获取/使用此值。   可以在Windows注册表中读取此值:

在你的情况下:

setx TIME_VAR %time%

for /f "tokens=3 delims=^ " %%i in ('reg query HKCU\Environment ^| findstr /i /c:"TIME_VAR"') do  echo/%%i
setx TIME_VAR %time%

for /f "tokens=3 delims=^ " %%i in ('reg query HKCU\Environment ^| findstr /i /c:"TIME_VAR"') do  (

echo/ local and next session  = = = =  
echo/ Setx Reg Value = "%%i" 

echo/ local and next session  = = = =  
echo/ TIME_VAR  Value = %%i

:eof
  

结果:

 :: local and next session  = = = = 
 Setx Reg Value = 13:32:05,15

 :: in same session and also in next
 TIME_VAR Value = 13:32:05,15