Batch Datei aufrufen



  • Hallo,

    ich möchte eine bereits bestehende Batch-Datei (c:\\Test\\ErrHelp.bat) mit meinem Programm ausführen lassen. Benütze den Borland C++ Builder 4. Versuche es mit dem CreateProcess(...) Befehl, funktioniert aber nicht. Eine andere Möglichkeit wie ich eine Datei aufrufen kann fällt mir nicht ein (bin kein Programmierspezialist). Eine *.exe kann ich so aufrufen.

    Es wäre echt klasse wenn mir jemand bei diesem Problemchen weiterhelfen kann.

    Vielen Dank schon mal!!!
    drBothe



  • ShellExecute sollte da weiterhelfen. Siehe die FAQ unter "Allgemein - externes programm starten".



  • Habe es jetzt mit ShellExecute versucht, stehe aber irgendwie auf dem Schlauch.

    if(n!=0)
    {
    Batch="C:\\Test\\ErrHelp.Bat";

    int ret = (int) ShellExecute(0, "open", FileName, FileParam, 0, SW_SHOWNORMAL);
    }
    else
    Application->MessageBox("Fehler","",MBOK);

    Normalerweise müßte der Editor für den DOS-Modus geöffnet werden.
    Wenn ich auf meiner Batch-Datei ein Doppelclick ausführe wird sie ausgeführt.


  • Mod

    Hallo

    schau dir mal "FileName" an und Batch

    faellt dir da was auf

    MfG
    Klaus



  • Das mit Filename und Batch hab ich schon korrigiert, es geht einfach nicht!



  • drBothe schrieb:

    es geht einfach nicht!

    👍 so wird dir jeder weiter helfen können 🤡
    gib mal einen klaren fehler beschreib durch
    hast du deinen Quode:

    Batch="C:\\Test\\ErrHelp.Bat";
    

    in

    Batch="C:\\Test\\ErrHelp.bat";
    

    umgeändert?



  • Hallo, ich hab hier mal den gesamten Teilcode:

    void __fastcall TfrmMain::Button7Click(TObject *Sender)
    {
    //Batch-Datei aufrufen
    if(RadioButton3->Checked==true)
    {
    Batch="C:\\Test\\ErrHelp.bat";

    int ret = (int) ShellExecute(0, "open", Batch.c_str(), NULL, 0, SW_SHOWNORMAL);

    if(ret>32)
    Memo1->Lines->Add("Batch wird ausgeführt");
    else
    Memo1->Lines->Add("Fehler");
    }
    }

    In der Hilfe steht auch nichts weiteres.



  • dan teste doch mal was es für ein fehler ist zB mit

    Memo1->Lines->Add("Fehler"+IntToStr(ret));
    


  • Hab jetzt herausbekommen das die Batch-Anweisungen bis zu einem bestimmten Ausdruck in dieser Datei ausgeführt werden, dann ist allerdings Feierabend und ich flieg raus.
    Was mich verwundert ist allerdings, daß ich es über mein Programm nicht zum laufen bringe und wenn ich es manuell mit Doppelklick mache geht alles.



  • Wenn du das DOS-Fenster sehen möchtest, kannst du die Batch-Datei auch mit system(Batch.c_str()) ausführen lassen.



  • OK, hab einen (Teil-)Fehler gefunden. Lag daran, daß manche Dateien die aus der Batch aufgerufen werden schreibgeschützt waren. Ein weiteren Fehler hab ich zwar herausgefunden aber noch nicht gelöst. Die Batch wird mit ShellExecute nicht ausgeführt.


  • Mod

    Hallo

    Die Batch wird mit ShellExecute nicht ausgeführt.

    Warum sollte sie denn nicht ausgefuehrt werden 😕

    Hast du dich schonmal mit dem Debugger befasst

    Denn bei mir funktioniert das

    MfG
    Klaus


Anmelden zum Antworten