agowa338
Goto Top

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?

Content-Key: 272768

Url: https://administrator.de/contentid/272768

Printed on: April 25, 2024 at 20:04 o'clock

Member: rubberman
Solution rubberman May 23, 2015 updated at 16:17:12 (UTC)
Goto Top
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
Member: agowa338
agowa338 May 23, 2015 at 15:27:13 (UTC)
Goto Top
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?
Member: rubberman
rubberman May 23, 2015 at 15:39:57 (UTC)
Goto Top
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
Member: agowa338
agowa338 May 23, 2015 updated at 16:01:53 (UTC)
Goto Top
Ok, aber wird das Erste Anführungszeichen nicht nach /tn Terminiert?
Member: rubberman
rubberman May 23, 2015 at 16:08:06 (UTC)
Goto Top
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
Member: agowa338
agowa338 May 23, 2015 at 16:17:06 (UTC)
Goto Top
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.
Member: rubberman
rubberman May 23, 2015 at 16:40:11 (UTC)
Goto Top
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