Batch datei erstellen via BCB6
-
Hallo
ganz primitiv und schnell kannst Du das Problem so lösen:
Du fügst eine Memokomponente dem Projekt hinzu.bei Deinem ButtonClick - Ereignis schreibst Du dann in der Art :
Memo1->Clear();
Memo1->Lines->Add("c:");
Memo1->Lines->Add("cd windows");
Memo1->Lines->Add("dir/p");Memo1->Lines->SaveToFile("c:\temp.bat");
das spart Dir die Dateiarbeit ist aber auch nicht die eleganteste Lösung
-
Hallo
@Rostfrei : Statt der Memo-Komponente lieber eine TStringList nehmen, wie es in der FAQ auch beschrieben wird. Der Rest stimmt aber.
bis bald
akari
-
Stimmt; ist noch schneller und weniger primitiv, also auch eleganter!
-
thx für die antworten, wie bekomm ich bei der memo methode die anführungszeichen in die datei ?
-
ok habs geraft \" ^^hehe steuerzeichen^^
-
danke nochma für eure hilfe, hat alles wunderbar geklappt, und reicht mir erst ma mit dem Memo, müsst nur noch das memo verstecken, aber das wird schon klappen memo1->hide() oder so denk ich ma...
weedy
-
weedhead87 schrieb:
danke nochma für eure hilfe, hat alles wunderbar geklappt, und reicht mir erst ma mit dem Memo, müsst nur noch das memo verstecken, aber das wird schon klappen memo1->hide() oder so denk ich ma...
Warum so ne Fummellösung mit hide() wenns mit TStringList (wie akari bereits sagte) besser ist?
-
bin anfänger, und habs gern einfach mit dem anderen hab ich mich net auseinander gesetzt, bi erstmal froh das es läuft
-
Hallo
Falls Du es doch nach akaris Art machen willst:
TStringList* myStringList = new TStringList;
myStringList->Add("C:");
myStringList->Add("dir/p");
myStringList->SaveToFile("C:\\test.bat");Gruss Rostfrei[]
-
aber nicht vergessen, nach dem SaveToFile auch wieder aufzuräumen... wir wollen doch keine speicherlecks - das wäre alles andere als elegant ^^
delete myStringList;ich nehme an, du willst die batch danach auch ausführen? das würdest du dann zB mit ShellExecute machen:
ShellExecute(NULL,"open","C:\\test.bat",NULL,"C:\\",SW_SHOWNORMAL);oder wenn keine dos-box während der ausführung angezeigt werden soll:
ShellExecute(NULL,"open","C:\\test.bat",NULL,"C:\\",SW_HIDE);cya
AlgoMan
-
das iss ja heftig hier, echt kollegial wie ihr mir helft, hätt ich so nicht erwartet...thx 4 this
mh ich hab das mit winexec gemacht:
//Memo Inhalt in Datei schreiben
Memo1->Lines->SaveToFile("c:\\temp.cmd");
//temp.cmd aufrufen
WinExec("C:\\temp.cmd",SW_SHOWNORMAL) ;
//10sec Pause
Sleep(10000);
//Neustarten
WinExec("shutdown -r -t 1",SW_SHOWNORMAL) ;
-
WinExec sollte nicht mehr benutzt werden
Siehe stattdessen:
http://www.marquardtnet.info/cecke/quickies.1/1_quicky_18.html
oder
http://www.marquardtnet.info/cecke/quickies.1/1_quicky_25.htmlAuch der Shutdown kann unter XP Probleme bringen:
http://www.marquardtnet.info/cecke/quickies.1/1_quicky_13.html
-
danke für den vorschlag habs jetzt mal geändert auf:
//Datei aufrufen
ShellExecute(NULL,"open","C:\\test.cmd",NULL,"C:\",SW_HIDE);//10sec Pause
Sleep(10000);//Neustarten
DWORD res=0;
ExitWindowsEx(EWX_FORCE|EWX_REBOOT,res);