Programmaufruf mit System() macht Probleme bei Parametern mit Leerzeichen
-
Hallo zusammen,
ich möchte die selbsterstellte C:\Programme\Office 2007 Tool\test.bat Datei starten.
Inhalt der test.bat Datei:
echo %0
echo %1
PAUSEWenn ich nun die Datei so Aufrufe:
system("\"c:\\Programme\\Office 2007 Tool\\test.bat\"");startet test.bat, ohne Parameter.
Wenn ich nun die Datei so Aufrufe:
system("\"c:\\Programme\\Office 2007 Tool\\test.bat\" argument1");startet test.bat, mit einem Parameter.
(Bisher läuft also alles wie erwartet!!!)
Wenn aber das Argument ein Leerzeichen enthält, muss ich es auch in Anführunszeichen setzen.
Aber wenn ich nun die Datei so Aufrufe:
system("\"c:\\Programme\\Office 2007 Tool\\test.bat\" \"argument mit leerzeichen\"");startet nichtmal die test.bat Datei.
Also warum geht das nicht??
Hinweis: Wenn ich in der Eingabeaufforderung
"c:\Programme\Office 2007 Tool\test.bat" "argument mit leerzeichen"
eingebe, funktioniert es auch.
Woran könnte es liegen? Ich wäre auf Hinweise sehr dankbar!
Mit freundlichen Grüßen,
Dominik L.
-
Du musst grundsätzlich unterscheiden zwischen einem laufenden Kommandointerpreter, einer Batch-Datei und der Übergabe einer auszuführenden Zeichenkette an den Kommandointerpreter.
Mit system() zu arbeiten ist nicht dasselbe wie es in der Eingabeaufforderung einzugeben.
Wenn du es in der Eingabeaufforderung nachstellen willst kommt das der Sache näher:
cmd /C "c:\Programme\Office 2007 Tool\test.bat" "argument mit leerzeichen"Was scheitert, wohingegen
cmd /C ""c:\Programme\Office 2007 Tool\test.bat" "argument mit leerzeichen""vermutlich funktionieren wird.
Frag mich aber nicht warum der Interpreter bei
"c:\Programme\Office 2007 Tool\test.bat" "argument mit leerzeichen"stolpert, denn wenn man einen Befehl davor setzt
echo Hallo!&&"c:\Programme\Office 2007 Tool\test.bat" "argument mit leerzeichen"macht er es dann wieder.
Seltsam.

(siehe "cmd /?" für mehr Informtionen)