我在包含变量的字符串中遇到问题
我在注册表中读取了这样的 key :
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
我想将注册表值转换为一个好的路径
最佳答案
将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
关于windows - 如何解释批处理字符串中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14728873/