这让我很抓狂,但肯定是很简单的事情。我尝试使用 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
。