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.
-
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.
-
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