
這讓我抓狂,但這一定是非常簡單的事。我正在嘗試使用 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
。