
Это сводит меня с ума, но это должно быть что-то очень простое. Я пытаюсь добавить значение 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
.