Entwickler-Ecke

Sonstiges (Delphi) - Mehzeiliger CMD Befehl


Georg08 - So 24.05.09 13:39
Titel: Mehzeiliger CMD Befehl
Hallo,
Ich habe folgende frage:
ich möchte folgende CMD-Befehle ausführen:

Quelltext
1:
2:
cd C:\Mein_ordner\
Programm.exe -parm1 wert1 -parm2 wert2

wie kann ich dies ausführen über delhpi?

Delphi-Quelltext
1:
windows.winexec(pchar(s),1);                    

Das kann nur einzeilige scripts


Robert.Wachtel - So 24.05.09 13:40

Batchdatei schreiben und ausführen.


Georg08 - So 24.05.09 13:41

danke für die superschnelle antwort.
ich mache das gerade so, aber ich wollte wissen ob es eine schönere variante gibt...


hansa - So 24.05.09 13:42

user profile iconRobert.Wachtel hat folgendes geschrieben Zum zitierten Posting springen:
..und ausführen.


Da hakts doch. Das Stichwort hierzu lautet "shellexecute".


Robert.Wachtel - So 24.05.09 13:51

user profile iconhansa hat folgendes geschrieben Zum zitierten Posting springen:
Da hakts doch. [...]

Woher willst Du das wissen?


ffgorcky - So 24.05.09 14:07

Ja, da ist jetzt wirklich die Frage:
Möchtest Du Dein MsDos-Batch zum Beispiel in ein Memo einlesen und dann das ganze wirklich Zeilenweise ausführen lassen? - das würde meiner Meinug nach dann so gehen:

Delphi-Quelltext
1:
2:
3:
MemoBatch.Lines.LoadFromFile('WieAuchImmerEsHeisst.BeliebigeEndung');
for i:=0 to MemoBatch.Lines.Count-1 do
   windows.winexec(MemoBatch.Lines[i]);

Oder möchtest Du das Script als ganzes ausführen?
Das müsste dann so gehen:

Delphi-Quelltext
1:
ShellExecute('WieAuchImmerEsHeisst.BeliebigeEndung');                    


Timosch - So 24.05.09 14:19

WinExec ist deprecated und sollte generell nicht mehr verwendet werden. Bei Befehlen, die keine Programme sind (z.B. dir) stattdessen über ShellExecute cmd.exe mit Parameter "/c Befehl" ausführen.


Georg08 - So 24.05.09 14:26

ich will einfach nur eine mehrzeilige cmd aktion ausführen, also erst das verzeichnis ändern und dann eine datei mit parametern starten...


Timosch - So 24.05.09 14:43


Delphi-Quelltext
1:
ShellExecute(handle,PChar('open'),PChar('c:\mein_ordner\programm.exe'),PChar('-parm1 wert1 -parm2 wert2'),PChar('c:\mein_ordner'),SW_SHOW);                    

Die erste Zeile in deinem "mehrzeiligen Befehl" ist nicht nötig, da man in ShellExecute mit dem vorletzten Parameter das Standardverzeichnis setzen kann (s.o.).
WinExec bitte nicht mehr verwenden; das läuft auf neueren Windows-Versionen z.T. schon nicht mehr.


hansa - So 24.05.09 18:30

user profile iconRobert.Wachtel hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconhansa hat folgendes geschrieben Zum zitierten Posting springen:
Da hakts doch. [...]

Woher willst Du das wissen?


Das war im Kontext doch so zu erkennen.


Robert.Wachtel - So 24.05.09 19:21

user profile iconhansa hat folgendes geschrieben Zum zitierten Posting springen:
Das war im Kontext doch so zu erkennen.

Sicher?

user profile iconGeorg08 hat folgendes geschrieben Zum zitierten Posting springen:
[...] ich mache das gerade so, aber ich wollte wissen ob es eine schönere variante gibt...

:mrgreen: