agowa338

CMD Befehl mit Anführungszeichen - Syntax Error

Hallo,

Ich kämpfe gerade mit der Syntax eines etwas komplexeren Befehls, der Befehl ist folgender:
cmd.exe /C "schtasks /create /tn ""TASK-NAME"" /sc ONSTART /DELAY 0015:00 /RL HIGHEST /tr ""'C:\Windows\System32\cmd.exe' '/C calc.exe'"" /RU SYSTEM /F"

Das erste cmd.exe /C kommt von meiner Softwareverteilung, die setzt es automatisch Vornedran genauso wie die äußeren Anführungszeichen.

Das Problem ist jetzt die Stelle mit
""'C:\Windows\System32\cmd.exe' '/C calc.exe'""
hier stimmen meine Anführungszeichen nicht, wenn ich es ohne den Parameter versuche, also
""C:\Windows\System32\cmd.exe""
ist die Syntax richtig.

Kann mir jemand sagen, wie ich den Parameter da rein bekomme?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 272768

Url: https://administrator.de/forum/cmd-befehl-mit-anfuehrungszeichen-syntax-error-272768.html

Ausgedruckt am: 09.07.2025 um 01:07 Uhr

rubberman
Lösung rubberman 23.05.2015 aktualisiert um 18:17:12 Uhr
Hallo agowa338

Da sind ein paar Anführungszeichen zu viel und das 2. /C gehört nicht in die einfachen Anführungszeichen.
Teste:
cmd.exe /C "schtasks /create /tn "TASK-NAME" /sc ONSTART /DELAY 0015:00 /RL HIGHEST /tr "'C:\Windows\System32\cmd.exe' /C 'calc.exe'" /RU SYSTEM /F"
Grüße
rubberman
agowa338
agowa338 23.05.2015 um 17:27:13 Uhr
Danke, das hat funktioniert.

Ich verstehe das so, dass die Anführungszeichen folgende Gültigkeit haben:
"schtasks /create /tn "
Anschließend das TASK-NAME ohne. und so weiter, ist nur anscheinend falsch...

Kannst du mir die Syntax etwas erklären?
rubberman
rubberman 23.05.2015 um 17:39:57 Uhr
Kannst du mir die Syntax etwas erklären?
Naja, das ist ein wenig anders als man denken könnte. Man kann (manchmal muss) die Kommandozeile in Anführungszeichen an die CMD übergeben, á la
cmd /c "Kommandozeile"
Der Witz ist nun, dass Anführungszeichen innerhalb der Kommandozeile eben nicht verdoppelt oder sonstwie maskiert werden.

Was den /tr Switch von SCHTASKS angeht, so werden im Task aus den Apostrophen normale Anführungszeichen. Logischerweise muss das /C als separate Option an die CMD übergeben werden.
So etwas wie
cmd "/c Kommandozeile"
würde schließlich nicht funktionieren.

Grüße
rubberman
agowa338
agowa338 23.05.2015 aktualisiert um 18:01:53 Uhr
Ok, aber wird das Erste Anführungszeichen nicht nach /tn Terminiert?
rubberman
rubberman 23.05.2015 um 18:08:06 Uhr
Nein. Das ist eben die Besonderheit bei diesem Aufruf.
Test am CMD Prompt:
C:\>cmd /c "echo "Hallo Welt""
"Hallo Welt"

C:\>
face-wink

Grüße
rubberman
agowa338
agowa338 23.05.2015 um 18:17:06 Uhr
Achso, die Anführungszeichen vom cmd /c sind also "besonders".

Ich war nur etwas verwirrt, als ich nach dem gegoogelt habe, hab ich folgende "Lösungen" gefunden:
cmd /c " echo \"Hallo Welt\""
cmd /c " echo "" Hallo Welt "" "
cmd /c " echo """ Hallo Welt """ "

Naja, alles außer der richtigen Lösung halt.
rubberman
rubberman 23.05.2015 um 18:40:11 Uhr
die Anführungszeichen vom cmd /c sind also "besonders"
Ja, kann man so sagen. BTW Der in der Kommandozeile naheliegendste Versuch ^" fehlt in deiner Aufzählung face-wink

Grüße
rubberman