Der Martin: system() Pfad mit Leerzeichen, maskieren

Beitrag lesen

Hallo,

$last_line = system("""C:\Program Files\Common Files\pdfinfo"" "$ordner/$file"", $retval);
Doppelte Anführungszeichen? Huch ...
Ja. Siehe Benutzerkommentar im PHP-Handbuch von luko post cz. Allerdings muss nach seiner Aussage das abschließende doppelte " nicht hinter den Befehl, sondern hinter die Argumente.

ja, ich verstehe was er meint, aber mir leuchtet das dennoch nicht ein. Denn wenn ich aus einer beliebigen anderen Anwendung oder sogar aus einer Windows-Verknüpfung heraus cmd.exe mit einer Folge von Parametern aufrufe, brauche ich auch per se erstmal keine Anführungszeichen:

cmd.exe /c notepad.exe C:\Windows\dummy.txt

Diesen String kann ich, so wie er dasteht, an Windows zur Ausführung übergeben.

Warum "luko post cz" vorschlägt, hier den String "notepad.exe C:\Windows\dummy.txt" insgesamt in Anführungszeichen zu setzen, ist mir schleierhaft. Und auch PHP braucht dem Argument von system() doch bloß noch die Zeichenfolge cmd /c voranzustellen, und den resultierenden String an die OS-Funktion exec() zu übergeben.

So long,
 Martin

--
Eine Neandertaler-Sippe sitzt in ihrer kalten Höhle. Seufzt der Stammesälteste: "Hoffentlich erfindet bald jemand das Feuer!"