
Esto me está volviendo loco pero debe ser algo muy simple. Estoy intentando agregar un valor de ImagePath (REG_SZ) en un script por lotes usando REG ADD, donde los datos del valor contienen "comillas dobles" incrustadas. Pero sigo recibiendo el error "Sintaxis no válida". Este es el valor que estoy intentando agregar:
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
Intenté encerrar los datos entre comillas simples:
@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%'
También intenté encerrar entre "comillas dobles", bang (!), [corchetes], \barras invertidas\ y ^carets^ pero sigo recibiendo el error de sintaxis.
¿Alguna idea de lo que estoy haciendo mal?
Respuesta1
El parámetro debe estar entre comillas dobles. Otra puntuación elegida al azar (comillas simples, signos de exclamación, ...) no funcionará.
Sin embargo, es necesario anteponer elinternocomillas dobles con barras invertidas:
@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%"
Nota 1: Para asignar valores en Cmd es necesario utilizar SET
(como en SET VAR=VALUE
).
Nota 2: No lo use PATH
como nombre de variable, ya que Cmd ya lo usa para especificar ubicaciones de programas y sobrescribirlo hará que el script no pueda ejecutarse REG.EXE
.