windows - 如何解释批处理字符串中的变量?

标签 windows shell scripting batch-file dos

我在包含变量的字符串中遇到问题
我在注册表中读取了这样的 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/

相关文章:

linux - UNIX,为 C 或 KornShell (ksh) 中的变量赋值

java - 即使测试用例失败也执行 Selenium 脚本

c++ - 正则表达式+编译 boost ?

java - 如何在 Windows 机器上检查 java 无限强度加密策略

windows - Windows 的 CMake 安装目标 bin 等效项

shell - haskell 和 Unix shell 脚本

c# - 如何在 Windows 中获取光标下的单词?

linux - 使用 Linux (Debian) 获取图像中像素的颜色

grails - 在Grails cmd脚本中填充数据库

php - 根据域名更改网页标题的脚本