Pfadübergabe aus Batch-Datei?



  • Hi Leute,

    ich habe ein Programm geschrieben, mit dem man txt-Dateien zeilenweise einlesen kann. Die Pfadeingabe der Quell- und Zieldatei (zum abspeichern bestimmter Werte aus der eingelesenen Quelldatei) erfolgt über ein Eingabemenü manuell.

    cin>>quellpf..............
    datein.open(file.c_str(), ios_base::in);
    .....
    .....
    cin>>zielpf.............
    dataus.open(zielpf.c_str(), ios_base::app);

    Nun gut, alles läuft ganz prima, aber jetzt soll die Pfadangabe über eine Batch-Datei erfolgen! Hm, was ist eine Batch-Datei? Und wie mache ich das mit der Pfadübergabe aus einer solchen Datei?

    Gruß + Danke

    Hirsch



  • Am besten wird dafür wohl sein Du nimmst die Namen einfach als Argument oder von der Standardeingabe entgegen.

    Wenn Du nicht weißt, was eine Batchdatei ist dann frag mal das FOLDOC oder Google.



  • also sind zwei zeilen eingabe (quell- und zielpfad) die einzigen eingabe?
    dann geht es so:

    :) datei batch.bat
    echo q:\quell > input.rmt
    echo z:\ziel >> input.rmt
    deineexe.exe < input.rmt
    del input.rmt
    

    anmerkungen:
    diese atei mit notepad.exe oder ähnlichem erstellen, sie ist eine batch-datei. sie wird von command.com (oder cmd) abgearbeitet, was unsere kleine shell ist.
    zeile 1: der ':' leitet labels ein. alles nach dem ':' wird ignoriert (außer bei der suche nach dem label durch goto). label-ignorieren geht schneller als ignorieren mit rem, weshalb man damit mal anfing. heite schreibt man gerne : statt rem, um die kommentare deutlicher vom rest abzuheben.
    zeile 2: rmt steht für remote und ist bei mir die übliche erweiterung für eingabedateien. es gibt ja öfters mal programme, die er eingabeumleitung gesteuert wrerden müssen, zum beispiel die ftp.exe.
    zeile 2: eigentlich %TEMP%\input.rmt

    aber das hat dein chef bestimmt nicht gemeint. er wollte (wie es sich gehört) dein programm er batch steuern können, und damit meint er, daß du argc und argv auswerten sollst.

    int main(int argc,char* argv[]){
       string quellpf,qielpf;
       if(argc==3){
          quellpf=argv[1];
          zielpf=argv[2];
       }
       else{
          cin>>quellpf;
          cin>>zielpf;
       }
    }
    

    und nu kannst in der batch.bat einfach schreiben

    deineexe.exe q:\quell z:\ziel
    


  • Wow!!!

    Volltreffer! Super, Danke an euch beide! So passende Antworten hatte ich nicht erhofft! Das hat mir stundenlanges Herumdoktorn erspart!

    Danke nochmals!

    Gruß

    Hirsch


Anmelden zum Antworten