bat Datei in C++ nachbauen



  • Hallo Leute,
    ich versuche gerade eine Befehlskette aus einer .bat Datei in ein C++ Programm zu übernehmen. Weit bin ich damit aber nicht gekommen. Ich hatte vor, das ganze über die Funktion system() zu realisieren. Kann mir jemand erklären, warum

    ..
    int stat = system("cd\");
    stat += system("dir");
    ..

    das "dir" vom Arbeitsverzeichnis ausgibt und nicht das vom Stammverzeichnis?

    Und system(" \" c:\eigene programme\test.txt \" ") verarbeitet er mir nur bis "eigene". Was hab ich da vergeigt? Wenn ich die Anweisung "echo" davorsetz, gibt er mir ja genau den Befehl aus, den ich haben will.
    😕



  • der system(char*,...) gibt bei erfolg 1 zurück und bei einem Fehler 0

    gruss reima



  • PCL schrieb:

    das "dir" vom Arbeitsverzeichnis ausgibt und nicht das vom Stammverzeichnis?

    Jedesmal, wenn Du system() aufrufst, wird ein neuer Prozess gestartet, der sein eigenes Arbeitsverzeichnis hat. "cd" aendert somit nur sein eigenes Verzeichnis.

    Du musst Programme im Kontext des aufrufenden Prozesses ausfuehren, was nicht einfach ist.

    Im Prinzip musst Du das betreffende EXE File mit dem Windows-Loader in den Speicher Deines Prozesses mappen und dann synchron aufrufen. Es geht vielleicht auch einfacher, aber das war das erste, was mir einfiel. Schau Dir mal die Funktionen der ToolHelp Library an (Teil von Windows).



  • PCL schrieb:

    ...Und system(" \" c:\eigene programme\test.txt \" ") verarbeitet er mir nur bis "eigene"...

    c:\\"eigene programme\"\\test.txt



  • Ach, so ist das. Das "dir" wollte ich eh nur zum testen haben, damit ich nicht blind arbeiten muss.
    Vielen Dank.


Anmelden zum Antworten