Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CMD.exe mehrere Befehle in eine Console? (https://www.delphipraxis.net/41636-cmd-exe-mehrere-befehle-eine-console.html)

Master_BB 6. Mär 2005 11:22


CMD.exe mehrere Befehle in eine Console?
 
Hya,
wie stelle ich es an das ich an ein CMD fenster mehrere Befehle übergeben kann nacheinander?
sprich wie diese befehlsabfolge
netsh
interface ip set file c:\blabla.txt
interface ip show config
interface ip set file close

diese müßten sukzessiv in die CMD rein. mit shellexecute öffnert er logischer weise aber immer
ein neues CMD fenster wodurch das loggn mit der datei nicht geht.

Greetz
Master_BB

jfheins 6. Mär 2005 11:26

Re: CMD.exe mehrere Befehle in eine Console?
 
So:
Code:
cmd.exe /c echo Hallo, seien sie froh, dass Sie das hier sehen, && echo denn dieser Befehl haette auch ihre Festplatte formatieren koennen ... && pause>nul && echo ... aber keine Angst, der kommt gleich ... && echo. && pause
gibt aus:
Code:
Hallo, seien sie froh, dass Sie das hier sehen,
denn dieser Befehl haette auch ihre Festplatte formatieren koennen ...
... aber keine Angst, der kommt gleich ...

Drücken Sie eine beliebige Taste . . .

scp 6. Mär 2005 11:27

Re: CMD.exe mehrere Befehle in eine Console?
 
Du kannst wie gewohnt mit ShellExecute usw. arbeiten, wenn du vor dem ersten Befehl
Delphi-Quellcode:
AllocConsole;
und nach dem letzten Befehl
Delphi-Quellcode:
FreeConsole;
in den Quelltext einfügst.

Master_BB 6. Mär 2005 13:49

Re: CMD.exe mehrere Befehle in eine Console?
 
hm thx scp das hilft mir auf alle fälle schon mal weiter
ABER
es klappt noch nicht ganz.
ich muss befehle in die cmd senden
mit shell execute rufe ich ja immer sozusagen nur ein programm auf und übermittle parameter und aus ist.
ich muss aber im programm bleiben und nach dem ersten noch mehr befehle aufrufen.
in der cmd sähen die befehle von oben so aus
c:\
eingabe netsh
netsh\
eingabe interface ip set file ..
netsh\interface\ip\
eingabe blalbsdfsd

so um das hinzubekommen muss ich also bei der offenen console befehle übergeben.
gibts da was?

Greetz

scp 6. Mär 2005 22:00

Re: CMD.exe mehrere Befehle in eine Console?
 
Wenn du auf die einzelnen Befehle warten willst, kannst du MSDN-Library durchsuchenCreateProcess in Verbindung mit MSDN-Library durchsuchenWaitForSingleObject verwenden.
netsh-Befehle kannst du über eine Skriptdatei übergeben.
Code:
netsh exec <Skriptdatei>
PS: Im übrigen sollte man besser auf Befehle der Windows API zurückgreifen, anstatt das über ein Konsolen-Programm zu erledigen. Statt "cd" kannst du z.B. SetCurrentDirectory() verwenden.

xineohp 6. Mär 2005 22:33

Re: CMD.exe mehrere Befehle in eine Console?
 
@scp: Mir ist keine Methode bekannt wie man per Win-API die IP-Settings ändern kann (ok, das das muss nichts heisen, aber wenn man hier sucht landet man auch wieder bei netsh) Im übrigen finde ich das auch gar nicht so schlecht, vor allem weil es ein sehr mächtiges tool ist.

@Master_BB: du könntest das problem auch umgehen, indem du den netsh-Befehl in eine Zeile packst, z.B:
Code:
netsh interface ip show config >"C:\myfile.txt"
wobei ich allerdings den dump-Befehl vorziehen würde:
Code:
netsh interface ip dump >"C:\myfile.txt"

retnyg 6. Mär 2005 22:56

Re: CMD.exe mehrere Befehle in eine Console?
 
oder einfach eine batch-datei erstellen und dann rennen lassen....

Master_BB 7. Mär 2005 07:10

Re: CMD.exe mehrere Befehle in eine Console?
 
vielen DANK für eure ideen.
ich werd mal probieren was am besten klappt.
batch datei kam mir auch schon in den sinn aber ich wollt
erstmal kukn obs auch so geht.

jfheins 7. Mär 2005 18:11

Re: CMD.exe mehrere Befehle in eine Console?
 
Warum geht eigendlich meine Lösung mit den && nicht ??? :gruebel:

xineohp 7. Mär 2005 20:24

Re: CMD.exe mehrere Befehle in eine Console?
 
weil netsh irgendwie seinen eigenen Kontext (oder wie auch immer man das nennen soll) aufruft, probiers einfach mal aus.

SlowDown 15. Jun 2005 12:14

Re: CMD.exe mehrere Befehle in eine Console?
 
bei dem gleichen Problem häng ich au gerade, allerdings mit der wmic.exe..

4 5 befehle hintereinander und dann gut...seufz..

Zacherl 15. Jun 2005 21:22

Re: CMD.exe mehrere Befehle in eine Console?
 
Hallo,
ihr könntet einfach alle Befehle in eine Batch Datei schreiben und diese dann ausführen.

Florian

Master_BB 15. Jun 2005 23:45

Re: CMD.exe mehrere Befehle in eine Console?
 
ja mein programm ist auf dieser batchfilebais
schon fertig, aber ich muss sagen die wartezeit
ist einfach nur schlecht. man wartet um die 10sec
das die batchfile fertig ist und sich das teil zurück meldet.
elegant ist das nicht!

marabu 16. Jun 2005 06:37

Re: CMD.exe mehrere Befehle in eine Console?
 
Ist ja schon ein älterer thread, aber vielleicht interessiert es ja doch noch jemanden.

Zitat:

Zitat von Master_BB
ich muss aber im programm bleiben und nach dem ersten noch mehr befehle aufrufen.
... so um das hinzubekommen muss ich also bei der offenen console befehle übergeben. gibts da was?

die Frage bezog sich auf NETSH.EXE und da gibt es mehrere Möglichkeiten. Die erste und am schnellsten zu implementierende ist sicherlich das Arbeiten mit einem Skript. Alle Konsolenprogramme, die einen oder mehrere Arbeits-Kontexte bereit stellen, bieten in der Regel einen scripting mode an - so auch NETSH.

Code:
netsh -f netsh.script
Und in der Datei netsh.script kann dann das stehen:

Code:
interface
ip
set file open netsh.info
show config
set file close
exit
Eine andere Möglichkeit besteht über das IP Helper API, aber das macht eigentlich erst Sinn, wenn man deutlich mehr machen will als die Konfiguration auslesen. Die am wenigsten befriedigende Lösung ist in meinen Augen die Zerlegung in einzelne Kommandos mit dem Ziel einer Stapelverarbeitung.

Grüße vom marabu

SlowDown 16. Jun 2005 07:21

Re: CMD.exe mehrere Befehle in eine Console?
 
Hmm, kann das dann sein, das das bei wmic.exe so wie hier von mir geschildert :
http://www.delphipraxis.net/internal...=383383#383383

mit && gar nicht geht, das ich also um mehrere befehle hintereinander an die wmic.exe zu senden, ein extra script oder Batch aufrufen muss ??

SlowDown 16. Jun 2005 07:48

Re: CMD.exe mehrere Befehle in eine Console?
 
Danke hat sich erledigt..


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz