如何解决批处理变量中的双百分号?

问题描述 投票:0回答:1

我从注册表中获取一个包含以下数据字符串的值:

%USERPROFILE%\Desktop

如果我手动输入
cd %USERPROFILE%\Desktop
它会正确执行
cd C:\Users\Name\Desktop

但是当我从注册表中读取数据时,它给出了
set DESKTOP = %%USERPROFILE%%\Desktop

所以如果我这样做

cd %DESKTOP%
(
cd %%USERPROFILE%%\Desktop
) 它就会执行
cd %USERPROFILE%\Desktop

这给出了错误:
The system cannot find the path specified.

如何解析/评估

%%USERPROFILE%%\Desktop
字符串数据? (所以
%%USERPROFILE%%
变成
C:\Users\Name

这也是我从注册表获取数据的方式:

for /f "tokens=2*" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do set DESKTOP=%%b 

batch-file
1个回答
0
投票

您需要

CALL
命令来第二次计算表达式。

echo %desktop%
call echo %desktop%

CALL
还可以与其他命令(如
SET
)一起使用,但不能在
IF
FOR

前面
© www.soinside.com 2019 - 2024. All rights reserved.