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%'

我還嘗試用「雙引號」、bang (!)、[brackets]、\backslashes\ 和 ^caret^ 括起來,但我不斷收到語法錯誤。

知道我做錯了什麼嗎?

答案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

相關內容