我有一个包含variables的string的问题
我读了一个registry中的密钥,如下所示:
call:ReadReg "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" "Desktop" echo %RegValue% :ReadReg FOR /F "usebackq tokens=1-3" %%A IN (`REG QUERY "%~1" /v "%~2" 2^>nul`) DO ( set RegName=%%A set RegType=%%B set RegValue=%%C ) goto:eof
但在RegValue中返回的值是: %USERPROFILE%\Desktop
而不是: C:\Documents and Settings\username\Desktop
ECHO线显示:
C:\Documents and Settings\alopez>echo %USERPROFILE%\Bureau %USERPROFILE%\Bureau
我想将registry值转换成一个好的path
将set RegValue=%%C
替换为call set RegValue=%%C
这将导致两次可变扩展; 一次用于呼叫命令,然后再次用于设置命令。 运行这个例子.bat脚本来看看它的行动。
@echo off set x=%%Path%% echo %x% echo. call echo %x% call set x=%x% echo. echo %x% pause >nul