我需要存储一个值(时间戳),然后在批处理文件中检索它。所以我搜索了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%
如何检索我的储值?
答案 0 :(得分:6)
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