REG ADD REG_SZ, где значение содержит встроенные двойные кавычки

REG ADD REG_SZ, где значение содержит встроенные двойные кавычки

Это сводит меня с ума, но это должно быть что-то очень простое. Я пытаюсь добавить значение ImagePath (REG_SZ) в пакетный скрипт с помощью REG ADD, где данные значения содержат встроенные «двойные кавычки». Но я продолжаю получать ошибку «Недопустимый синтаксис». Это значение, которое я пытаюсь добавить:

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

Я также пробовал заключать в «двойные кавычки», восклицательные знаки (!), [квадратные скобки], \обратные косые черты\ и ^кареты^, но я продолжаю получать синтаксическую ошибку.

Есть идеи, что я делаю не так?

решение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.

Связанный контент