myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Batch: Programm soll nach 20 sekunden geschlossen werden (https://mygully.com/showthread.php?t=2472408)

UGP 03.11.11 20:16

Batch: Programm soll nach 20 sekunden geschlossen werden
 
Ich möchte eine batch datei, weis aber nicht, wie ich es realisieren kann.

mein plan: x.bat wird ausgeführt
firefox.exe öffnet sich
20 sekunden passiert nichts
firefox.exe schließt sich


nun weis ich, ich muss mit start C:\Programme\ff\firefox.exe das programm starten, aber wie mache ich die pause und das schließen des programms?

urga 04.11.11 11:50

die pause:
timeout /T 20 > nul

das schliessen des programmes ist schon nen bissl schwieriger:
per
tasklist | find "firefox"

findest du den prozess.

jetzt musst du nur noch an die PID der ausgabe kommen.
und per taskkill /PID N /T den prozess abschiessen.

unter unix wuerde man die ausgabe von tasklist durch sed oder awk jagen um an die PID zu kommen. die befehle gibts unter windows nicht. google hier mal ein bisschen weiter.

Boggie 04.11.11 14:37

oder zum schließen einfach "taskkill /f /im firefox.exe" ;)

urga 04.11.11 18:48

lol, warum einfach wenn's auch kompliziert geht ;)

UGP 05.11.11 10:31

okay meine batch datei sieht so aus:

Code:

start C:\Programme\ff\firefox.exe
timeout /T 20 > nul
taskkill /f /im firefox.exe

Firefox startet auch, 20 sekunden passiert nichts, und ... es schließt sich nicht wieder automatisch :(

Boggie 05.11.11 18:03

Code:

CMD /C START C:\Programme\ff\firefox.exe
timeout /T 20 > nul
taskkill /f /im firefox.exe

Er hat immer gewartet, bis Firefox geschlossen wurde und erst danach wurde die Batch weiter abgearbeitet... ;)

haze303 05.11.11 18:22

Das ist eine Eigenart von Batch, denn Batch-Dateien werden nach dem Prinzip der Stapelverarbeitung ausgeführt.

In diesem Beispiel kann man das Ganze wie folgt lösen:

Code:

CMD /C START /b C:\Programme\ff\firefox.exe
timeout /T 20 > nul
taskkill /f /im firefox.exe

Der Schalter /b bewirkt, dass die Anwendung in einem neuen Fenster gestartet wird, wobei Firefox sowieso ein "neues Fenster" ist, daher trifft hier eher zu, dass die Batch-Datei nicht auf die Beendigung von Firefox wartet, bis der nächste Befehl "timeout ..." ausgeführt wird.

Viele Grüße,
haze303

germgerm 06.11.11 10:08

Ich gebe beim taskkill auch immer den Schalter /t an, damit werden auch alle darunter liegenden Prozesse "beendet".

haze303 11.11.11 22:07

Die PID des Prozesses ändert sich von Start zu Start, daher ist die Methode über den Abbildnamen via Schalter /IM geschickter.

Viele Grüße,
haze303

klauskanalratte 17.11.11 17:39

Habe hier mal eine Batch selber probiert. Sie funktioniert tadellos.



Zur Erklärung:
Start= startet das gewünschte Programm
ping -n (Ziffer)= ist die gewünschte Zeit bis zum Beenden
127.0.0.1= ist die Localhost, der eigene Rechner
>NUL= macht in diesem Fall den Zählvorgang unsichtbar
Taskkill= beendet ausgewähltes Programm


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

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.