system befehl mit leerzeichen
-
hallo!
Habe das Problem, dass ich einen Systembefehl ausführen möchte.
Allerdings sind in dem Pfad Leerzeichen enthalten.system("C://Programme//WinRAR//WinRAR.exe a -r -v D://Rar.rar C://Dokumente und Einstellungen//.....");
Da nun in Dolumente und Einstellungen Leerzeichen enthalten sind, verrart Winrar nun C:/Dokumente/
Was kann ich da tun?
Achja, ich hab gehört der Systembefehl funktioniere nur auf einigen Systemen?
Wie ist das wirklich?Vielen Dank!
mfg
-
Welcher Returnvalue wird denn zurueckgeben?
-
rückgabewert ist 0.
also entweder findet es den command interpreter nicht, oder jener gibt einfach 0 zurück.
Was der Command interpreter genau ist weiß ich allerdings nicht.
Danke für die schnelle Antwort!
mfg
-
system("C://Programme//WinRAR//WinRAR.exe a -r -v D:\\Rar.rar \"C:\\Dokumente und Einstellungen\.....\"");
-
system("C:\\Programme\\WinRAR\\WinRAR.exe a -r -v D:\\Rar.rar \"C:\\Dokumente und Einstellungen\\.....\"");
-
wow, super!
Vielen Dank!
Jetzt funktioniert es wenn ich den Pfad unter ANführungszeichen stelle!
Warum genau muss ich das machen?
Sorry, wenn das eine blöde Frage wäreDanke nochmal!
mfg
-
kool schrieb:
rückgabewert ist 0.
Das heisst
system
funktioniert. Im Falle eines Fehlers wuerde System (-1) zurueckgeben.
-
kool schrieb:
Warum genau muss ich das machen?
Weil Leerzeichen nunmal als Trennzeichen einzelner Parameter gelten, und dein Pfad in mehrere Parameter aufgeteilt wird.
Mit den Anführungszeichen wird dem Parser gesagt, das der Text zwischen den Anführungszeichen trotz eventueller Leerzeichen genau ein Parameter ist.bis bald
akari
-
aja, nun versteh ich das auch.
Eigentlich ganz logisch
Na dann, vielen Dank!
bis bald
-
kool schrieb:
Achja, ich hab gehört der Systembefehl funktioniere nur auf einigen Systemen?
Da hast du was falsches gehört. Da system() Standard ist, funktioniert das theoretisch auf allen Systemen. Was du der Funktion übergibst, ist allerdings systemspezifisch und muss deshalb nicht immer zum gewünschten Ergebnis führen. Das hat aber nichts mit system() zu tun, sondern hängt vom Befehlsprozessor des darunterliegenden Systems ab.