DOS Programm mit Argumenten per system(); starten
-
Wie gesagt möchte ich ein seperates Programm von einem C++ Programm aus starten. Ich gebe dazu den kompletten Pfad mit Programmnamen und Argumenten an, damit das seperate Programm eine "txt" Datei erstellt. Allerdings geht das nicht. Habe es auch manuell probiert und es ging nicht. Erst als ich im Ordner war, konnte ich das Programm samt Argumenten starten. Hat jemand eine Lösung?
-
Nimm CreateProcess. Da kannst du auch ein working directory angeben.
-
bei shellexecute kann man die auch mit angeben, und es ist obendrein nur halb so kompliziert
-
So habe ich es probiert, das Programm wurde zwar ausgeführt, aber wieder ohne die Argumente.
ShellExecute(NULL, NULL, "programmname", "argumente", "C:\\Users\\***\\Desktop\\ordner\\", SW_SHOWNORMAL);
-
Was habe ich falsch gemacht??
-
bei deinem aufruf sind argumente falsch gesetzt, der zweite parameter z.B. muss die auszuführende aktion beinhalten. sieh in der msdn nach
-
player4245 schrieb:
bei deinem aufruf sind argumente falsch gesetzt, der zweite parameter z.B. muss die auszuführende aktion beinhalten. sieh in der msdn nach
Habe beim 2. Argument auch schon "open" geschrieben und es ging trotzdem nicht.
-
Bei Windows sollte man immer absolute Pfade verwenden.
Zur Ausführung externer Programme gibt es exec() und spawn()-Funktionen.system() ruft die Command-Shell auf.
zB system( "dir c:\");
-
Scheppertreiber schrieb:
Bei Windows sollte man immer absolute Pfade verwenden.
Zur Ausführung externer Programme gibt es exec() und spawn()-Funktionen.system() ruft die Command-Shell auf.
zB system( "dir c:\");
Habe ich das nicht getan?
-
Na ja, fast
C:\\Users\***\\Desktop\\ordner\\
-
Scheppertreiber schrieb:
Na ja, fast
C:\\Users\***\\Desktop\\ordner\\
Absoluter Pfad = Pfad der mit dem Laufwerksbuchstaben beginnt. (Und nichts Anderes!)
Relativer Pfad = Pfadangabe die die Funktion zum Heraufkletten (..\), u.U. auch das aktuelle Verzeichnis als .\ verwendet.
Was fehlt denn bei meiner Pfadeingabe?
Gruß skully
-
Wenn du die drei * in deinem Quelltext real so stehen hast
wird DOS sich wahrscheinlich ziemlich zickig benehmen.Wildchars gehen in DOS nur sehr eingeschränkt!
In anderen Betriebssystemen hat man in der Hinsicht mehr
Möglichkeiten als in DOS.
-
skullyan schrieb:
Absoluter Pfad = Pfad der mit dem Laufwerksbuchstaben beginnt. (Und nichts Anderes!)
Auch wieder nur ein "fast" ... Da gibt's zB noch UNC-Namen.
Ein '*' hat in einem Dateinamen nichts verloren.
-
f.-th. schrieb:
Wenn du die drei * in deinem Quelltext real so stehen hast
wird DOS sich wahrscheinlich ziemlich zickig benehmen.Wildchars gehen in DOS nur sehr eingeschränkt!
In anderen Betriebssystemen hat man in der Hinsicht mehr
Möglichkeiten als in DOS.Hab' ich natürlich nicht. Ich wollte bloß meinen Namen nicht preisgeben. Was soll ich anders machen, damit es funktioniert?
-
Vielleicht das "Problem" mal sauber formulieren. Meist hast Du dann eh schon die Lösung.
-
Scheppertreiber schrieb:
Vielleicht das "Problem" mal sauber formulieren. Meist hast Du dann eh schon die Lösung.
Ich habe es bereits formuliert. Bei ShellExecute(); werden die Argumente leider nicht mit ausgeführt. Also muss ich ja was falsch machen. Nur was....?
Hier noch mal mein Code:ShellExecute(NULL, "open", "programmname (z.B. Notepad)", "argumente", "C:\\Users\\***\\Desktop\\ordner\\", SW_SHOWNORMAL);
-
chdir ("C:\\TESTVERZEICHNIS"); system ( "Notepad.exe Pappnase.txt" );
-
Pappnas0r schrieb:
chdir ("C:\\TESTVERZEICHNIS"); system ( "Notepad.exe Pappnase.txt" );
error C3861: "chdir": Bezeichner wurde nicht gefunden.
-
[gelöst]
Es lag am Header#include <direct.h>