如何附加其中包含空格的注册表项值?

如何附加其中包含空格的注册表项值?

我找到了以下页面(如何从 cmd 修改现有注册表项值名称的数据?),这非常有帮助,但我还有一个问题。

我的 PATH 值包含“c:\Program Files\Microsoft SQL Server\100\Tools\Binn\”,我想在其中添加“P:\SQL”。当我运行下面的脚本时,我的 PATH 将变成“C:\Program;P:\SQL”。需要修改哪些内容才能使我的 PATH 变成“c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;P:\SQL”?

以下是我所拥有的:

for /F "skip=2 tokens=3" %%r in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set oldVal=%%r    
echo previous=%oldVal%    
set newVal=%oldVal%;P:SQL    
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newVal% /f

谢谢。

答案1

我如何为我的 添加价值PATH

我的PATH值包含"c:\Program Files\Microsoft SQL Server\100\Tools\Binn\",我想"P:\SQL"向其添加

为什么要读/写注册表?

只需使用setx向您的添加一个值PATH

setx PATH "%PATH%;P:\SQL" /m

笔记:

  • /m在系统环境中设置变量HKLM

    (默认为本地环境HKCU


进一步阅读


答案2

如果你真的想篡改注册表,你可以按照以下步骤进行操作,但个人风险

@echo off
set new_value=;P:/SQL     ::set the new value here

set key="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
for /F "delims= skip=2" %%r in ('reg query %key% /v "Path"') do set old_value=%%r
set old_value=%old_value:    Path    REG_SZ    =%
set new_value=%old_value%%new_value%
reg add %key% /v "Path" /d "%new_value%" /f

我必须说,这是一种非常粗糙的方法。在修改注册表之前,请务必记得备份注册表

相关内容