batch oder cmd datei ausführen via system oder shellexcute
-
Hi,
ich hab heute versucht eine bat datei in
ShellExecute(NULL, NULL, "\"C:\\Dokumente und Einstellungen\\Steffen\\Desktop\\SchoolTimer\\config_1.bat\"", NULL, NULL, SW_SHOWNORMAL);
auszuführen aber ohne erfolg
wenn ich den letzten unterordner weglasse und die config_1.bat auf den Desktop kopiere dann klappts.Hab zurzeit kp was ich falsch mache
Gruß Steffen
PS: Mit system() klappts auch irgendwie ned
-
1. Da hat es zuviele Gänsefüsschen.
2. Sollte manopenals zweiten Parameter hinschreiben, sonst könnte das plötzlich unvorhergesehene Probleme erzeugen.
::ShellExecuteZusammengefasst sollte es also ca. so aussehen:
ShellExecuteA(NULL, "open", "C:/Dokumente und Einstellungen/Steffen/Desktop/SchoolTimer/config_1.bat", NULL, NULL, SW_SHOW);
Tipp am Rande: Windows erkennt auch / als Ordnertrenner
Grüssli
-
klappt ned. Die batch datei manuell funktioniert perfekt aber wenn ichs via c++ probier tut sich nix! Trotzdem danke für den Tipp mit "/"
Edit: Und wenn ich dem Trenner "/" bei system() versuch kommt
-->
Der Befehl "C:/Dokumente" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.Hat sonst noch jemand ne Idee?
Edit_2:
Wenn ich des auch mit deinem neuen Befehl aufm Desktop oder mit nem anderen Ordner versuch klappt des ohne Probleme! Oder daran das es der aktuelle Ordner is von dem dass Programm startet?
Kann es vllt. an Dev C++ liegen!?
-
systemgibt das Kommando einfach an die Shell weiter. Diese kommt mit dem / nicht klar. ShellExecute behandelt die Sache dagegen intern, also das wird direkt durch den Kernel gejagt
Naja, das mit dem
ShellExecutefunktioniert bei mir einwandfrei, auch mit einer Bat-Datei. Hab es gerade mit einer eigenen Bat-Datei auf meinem Desktop in einem Ordner probiert.
Stimmt bei dir auch der Pfad? Hast du Zugriffsberechtigungen? Oder stimmt was im restlichen Programm nicht?Grüssli
-
"C:/Dokumente"
-> Leerzeichen mag der meistens nicht (8.3 wers noch kennt),
probiers mal mit "C:/Dokume~1/Steffen/Desktop/SchoolTimer/config_1.bat"
-
Das mit den Leerzeichen würde ich so machen, dann klappts vielleicht auch:
ShellExecute(NULL, "open", "\"C:/Dokumente und Einstellungen/Steffen/Desktop/SchoolTimer/config_1.bat\"", NULL, NULL, SW_SHOW);
-
ich weiß was der Fehler war. Ich hab die batch datei vorher mit ofstream geschrieben. Und dann hat es nie gefunzt. Aber in den anderen Verzeichnisen wo ich sie mal zum testen reinkopiert hab. Dann hab ich gemerkt das ich die Ofstream datei nicht mit f1.close(); geschlossen hab
Trotzdem danke für eure Hilfe. Stand echt auf'm Schlauch!!!