REG ADD REG_SZ 其中值包含嵌入的双引号

REG ADD REG_SZ 其中值包含嵌入的双引号

这让我很抓狂,但肯定是很简单的事情。我尝试使用 REG ADD 在批处理脚本中添加 ImagePath 值 (REG_SZ),其中值数据包含嵌入的“双引号”。但我一直收到“语法无效”错误。这是我尝试添加的值:

Key  : HKLM\SYSTEM\CurrentControlSet\Services\MSSQL$SQLEXPRESS
Value: ImagePath REG_SZ
Data : "C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Binn\sqlservr.exe" -sSQLEXPRESS 

我尝试将数据括在单引号中:

@SETLOCAL
@SET IPATH="C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Binn\sqlservr.exe" -sSQLEXPRESS
@REG.EXE ADD "HKLM\SYSTEM\CurrentControlSet\Services\MSSQL$SQLEXPRESS" /f /v ImagePath /t REG_SZ /d '%IPATH%'

我也尝试用“双引号”、感叹号(!)、[括号]、\backslashes\ 和 ^carets^ 括起来,但仍然出现语法错误。

知道我做错了什么吗?

答案1

参数需要用双引号引起来。其他随机选择的标点符号(单引号、感叹号等)均不起作用。

但是,您需要在带反斜杠的双引号:

@SET ImagePath=\"C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Binn\sqlservr.exe\" -sSQLEXPRESS
@REG.EXE ADD "HKLM\SYSTEM\CurrentControlSet\Services\MSSQL$SQLEXPRESS" /f /v ImagePath /t REG_SZ /d "%ImagePath%"

注 1:要在 Cmd 中分配值,您需要使用SET(如SET VAR=VALUE)。

注意2:不要用作PATH变量名,因为它已经被 Cmd 用于指定程序位置,覆盖它将导致脚本无法运行REG.EXE

相关内容