我在包含变量的字符串中遇到问题 我在注册表中读了一个关键字:
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
我想将注册表值转换为好路径
答案 0 :(得分:4)
将set RegValue=%%C
替换为call set RegValue=%%C
这将导致变量扩展两次;一次用于call命令,然后再一次用于set命令。运行此示例.bat脚本以查看其运行情况。
@echo off
set x=%%Path%%
echo %x%
echo.
call echo %x%
call set x=%x%
echo.
echo %x%
pause >nul