2

我在包含变量的字符串中有问题
我在注册表中读取了一个键,如下所示:

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

我想将注册表值转换成一个好的路径

4

1 回答 1

4

替换set RegValue=%%Ccall set RegValue=%%CThis会导致变量膨胀两次;一次用于调用命令,然后再次用于设置命令。运行此示例 .bat 脚本以查看它的运行情况。

@echo off

set x=%%Path%%
echo %x%
echo.
call echo %x%
call set x=%x%
echo.
echo %x%
pause >nul
于 2013-02-06T14:28:06.380 回答