使用REG ADD将%~DP0写入注册表

Ska*_*inz 5 windows registry batch-file

我已经解决了有关将%DATE%插入REG_SZ注册表值的问题(请参阅链接),但现在我遇到了一个稍微不同的问题,试图将%~DP0(长源路径)插入到注册表值中REG ADD在.BAT脚本中.它不会这样做,我确定这是因为我做错了什么.

reg add "hklm\software\acme" /v "TestValue" /d "%~dp0" /t REG_SZ /f
Run Code Online (Sandbox Code Playgroud)

我也尝试先将值设置为变量,但这也不起作用.会发生什么呢?它插入扩展路径而不使用前面的双引号,但是使用尾随双引号,然后使用有关REG /的错误进行炸弹.语法等

SET VX=%~DP0
reg add "hklm\software\acme" /v "TestValue" /d "%VX%" /t REG_SZ /f
Run Code Online (Sandbox Code Playgroud)

有谁看到我做错了什么?

zda*_*dan 5

路径%~dp0以目录分隔符'\'结尾(例如'c:\ temp \'),它被解释为以下双引号字符的转义符,因此解析器没有看到结束双引号.你需要做的是用另一个转义尾随\字符:

reg add "hklm\software\acme" /v "TestValue" /d "%~dp0\" /t REG_SZ /f
Run Code Online (Sandbox Code Playgroud)