Exe Datei aus C++ heraus starten

  • Erstmal die Situation:
    Ich wollte die Musik eines Spieles auf ein im Winamp abspielbares Format bringen.
    Nach kurzer Suche bin ich auf ein Programm gestoßen, mit dem ich das kann, aber leider nur jede Datei einzeln (über die Eingabeaufforderung -> programm.exe musik_datei.acm).
    Also hab ich mir gedacht ich schreib mir ein eigenes Programm, dass einfach dieses andere durch eine Schleife laufen lässt und so den ganzen Ordnerinhalt auf einmal konvertiert.

    Jetzt hab ich ein Programm, dass mir die ganzen zu konvertierenden Datein rausfiltert, die dann als Parameter an die Exe Datei übergeben werden müssen.

    Nur wie kann ich jetzt diese Exe Datei starten?

    Ich hab bereits über 3 Stunden lang im Internet gesucht, ohne was zu finden was mir weitergeholfen hätte.

  • Aehm, wuerde es nicht reichen, das Ganze in der Eingabeaufforderung mit einer for-Schleife zu machen:

    Code
    for %a in (*.acm) do programm.exe %a
  • Natürlich hat Paulchen recht: Genau dafür gibt es for-Schleifen.

    Wie es dennoch auch in C++ ginge: mit dem system() Call:

    Code
    #include <stdlib.h>
    main() {
     system("c:\pfad\zu\programm.exe");
    }

    Dipper dipper dii dipper dii dipper dii duuu

  • Ich hab eine kurze Frage, die zur Antwort vom Paulchen passt. So wie du die Schleife gemacht hast, würde das Programm jedes mal für jede .acm datei aufgerufen werden.

    programm.exe 1.acm
    programm.exe 2.acm
    usw.

    Wie kann ich aber eine Schleife machen, damit das ganze so aussieht:
    programm.exe 1.acm 2.acm 3.acm
    ?

    Einfach alle Dateien einer bestimmten Dateiendung als Parameter übergeben. Ich hab schon alles mögliche versucht, habs aber noch nicht hinbekommen.

    640K ought to be enough for anybody. :eek2:

  • Hm, hab mir das kurz angesehen... bin aber nur auf eine "schmutzige" Lösung gekommen (cmd32 ist leider nicht bash :( :(

    Ich brauch eine Hilfs-Stapelverarbeitungsdatei, z.B. c:\bla.bat:

    Code
    set bla=%bla% %1


    Und dann geht das Gewünschte mit:

    Code
    set bla=
    for %a in (*.acm) do c:\bla.bat %a
    programm.exe %bla%

    Was passiert hier?
    Ich verwende eine Umgebungsvariable bla, in der ich die Argumente für programm.exe zwischenspeichere. Um das zu bewerkstelligen, setze ich zunächst diese Variable durch

    Code
    set bla=


    zurück. Dann führe ich in der for-Schleife für jede Datei c:\bla.bat mit der Zählvariable als Argument aus. Die Stapelverarbeitungsdatei hängt dann an den bisherigen Inhalt von bla den übergebenen Parameter an.

    Und warum geht

    Code
    set bla=
    for %a in (*.acm) do set bla=%bla% %a
    programm.exe %bla%

    nicht?

    Nun, das ist ganz einfach: Sobald die Zeile mit der for-Schleife verarbeitet wird, wird %bla% durch den Wert von bla ersetzt; dann steht da

    Code
    for %a in (*.acm) do set bla= %a

    und das geht natürlich nicht.

  • Wie kann ich aber eine Schleife machen, damit das ganze so aussieht:

    Code
    programm.exe 1.acm 2.acm 3.acm


    ?


    Unter Linux geht das mit

    Code
    programm *.acm


    (btw: er sortiert die Dateien auch gleich)

    Geht das unter Windows nicht auch so?

    Dipper dipper dii dipper dii dipper dii duuu

  • Paulchen ich kann dir nicht ganz folgen. Ist das jetzt eine Lösung, oder nicht? Ich habs so probiert und es funktioniert halbwegs, nur der Aufruf vom Programm wird nicht mehr verarbeitet.. hmm

    640K ought to be enough for anybody. :eek2:

  • Paulchen ich kann dir nicht ganz folgen. Ist das jetzt eine Lösung, oder nicht?

    Ja, sicher, hab ich ausprobiert, hat bei mir funktioniert. Ich kann nur wiederholen, was ich oben schon geschrieben habe: Inhalt von c:\bla.bat:

    Code
    set bla=%bla% %1


    Und dann Zeile für Zeile eingeben:

    Code
    set bla=
    for %a in (*.acm) do c:\bla.bat %a
    programm.exe %bla%

    Ich habs so probiert und es funktioniert halbwegs, nur der Aufruf vom Programm wird nicht mehr verarbeitet.. hmm

    hm? (Wie soll ich das verstehen?)

  • Naja ich hab das als batch datei ausgeführt und er arbeitet auch alles ab, nur nicht die letzte Zeile.. "programm.exe %bla%"

    Vielleicht, weil er zwischen bla.bat und der aktuellen batch datei immer hin und her hüpfen muss.. wenn ichs händisch eingeb, gehts.

    640K ought to be enough for anybody. :eek2:

  • Ich hab probiert die letzte Zeile in "bla.bat" zu stellen und es funktioniert. Jedoch wird das programm so ausgeführt:

    programm.exe 1.txt
    programm.exe 1.txt 2.txt
    programm.exe 1.txt 2.text 3.txt
    programm.exe 1.txt 2.text 3.txt 4.txt
    usw.

    Es funktioniert zwar, aber so kann ichs nicht lassen. Falls wer eine Lösung kennt, bitte ich um Hilfe.

    mfg

    640K ought to be enough for anybody. :eek2:

  • Ich hab noch ein Problem, und zwar gehts um den Link zum Acrobat Reader. Ich kann nach keinen Umlauten suchen. Bsp.:

    uni.pdf#search="Hörsaal"

    Im Reader wird dann nach "Hrsaal" gesucht. Was ist das Problem? Ich verwende die deutsche Version von Adobe Acrobat Standard. Ich glaub es liegt aber nicht am Reader, sondern an den Umlauten in der URL, oder? Wie kann ich das umgehen?

    640K ought to be enough for anybody. :eek2:

  • Ja, sicher, hab ich ausprobiert, hat bei mir funktioniert. Ich kann nur wiederholen, was ich oben schon geschrieben habe: Inhalt von c:\bla.bat:

    Code
    set bla=%bla% %1


    Und dann Zeile für Zeile eingeben:

    Code
    set bla=
    for %a in (*.acm) do c:\bla.bat %a
    programm.exe %bla%

    Verwendest du Letzteres in einer zweiten Batch-Datei, musst du schreiben:

    Code
    set bla=
    for [COLOR='Red']%[/COLOR]%a in (*.acm) do [COLOR='Red']call [/COLOR]c:\bla.bat [COLOR='Red']%[/COLOR]%a
    programm.exe %bla%

    (Hab ich schon mal erwähnt, dass ich die DOS-Shell liebe?)

    Ich glaub es liegt aber nicht am Reader, sondern an den Umlauten in der URL, oder?

    Ich hab versucht, "Hörsaal" als "H%F6rsaal" in der URL einzugeben, das bringt nix, ich denke daher, du darfst dem Reader die Schuld geben.

    Btw. wenn ich "Studienplan.pdf#search=Studienpläne" eingebe, wird (bei mir zumindest) nach "tudienpln" gesucht :distur:

  • Danke Paulchen. %F6 hab ich auch schon versucht und &ouml; usw. nix funktioniert.

    Probiers mal mit

    <A HREF="Studienplan.pdf#search=%22Studienpläne%22">Pläne</A>
    oder
    <A HREF="Studienplan.pdf#search='Studienpläne' ">Pläne</A>

    640K ought to be enough for anybody. :eek2:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!