
Das macht mich wahnsinnig, aber es muss etwas ganz Einfaches sein. Ich versuche, einen ImagePath-Wert (REG_SZ) in einem Batch-Skript mit REG ADD hinzuzufügen, wobei die Wertdaten eingebettete „Anführungszeichen“ enthalten. Aber ich erhalte immer wieder die Fehlermeldung „Ungültige Syntax“. Dies ist der Wert, den ich hinzuzufügen versuche:
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
Ich habe versucht, die Daten in einfache Anführungszeichen einzuschließen:
@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%'
Ich habe auch versucht, es in „doppelte Anführungszeichen“, Ausrufezeichen (!), [Klammern], \Backslashes\ und ^Caretzeichen^ einzuschließen, aber ich erhalte immer wieder den Syntaxfehler.
Irgendeine Idee, was ich falsch mache?
Antwort1
Der Parameter muss in doppelte Anführungszeichen gesetzt werden. Andere zufällig gewählte Satzzeichen (einfache Anführungszeichen, Ausrufezeichen, ...) funktionieren nicht.
Allerdings müssen Sie deminnereAnführungszeichen mit Backslashes:
@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%"
Hinweis 1: Um Werte in Cmd zuzuweisen, müssen Sie SET
(wie in SET VAR=VALUE
) verwenden.
Hinweis 2: Verwenden Sie diesen Namen nicht PATH
als Variablennamen, da er bereits von Cmd zum Festlegen von Programmspeicherorten verwendet wird und das Überschreiben dazu führt, dass das Skript nicht mehr ausgeführt werden kann REG.EXE
.