| Autor |
Beitrag |
Georg08
      
Beiträge: 155
Erhaltene Danke: 6
Win XP
Delphi 7.0 Personal
|
Verfasst: So 24.05.09 13:39
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
Zuletzt bearbeitet von Georg08 am So 24.05.09 13:40, insgesamt 1-mal bearbeitet
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: So 24.05.09 13:40
Batchdatei schreiben und ausführen.
|
|
Georg08 
      
Beiträge: 155
Erhaltene Danke: 6
Win XP
Delphi 7.0 Personal
|
Verfasst: 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
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: So 24.05.09 13:42
Da hakts doch. Das Stichwort hierzu lautet "shellexecute".
_________________ Gruß
Hansa
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: So 24.05.09 13:51
hansa hat folgendes geschrieben : | | Da hakts doch. [...] |
Woher willst Du das wissen?
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: 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
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: 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.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
Georg08 
      
Beiträge: 155
Erhaltene Danke: 6
Win XP
Delphi 7.0 Personal
|
Verfasst: 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
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: 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.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: So 24.05.09 18:30
_________________ Gruß
Hansa
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: So 24.05.09 19:21
|
|