Problem mit einer Batch Datei
Hallo,
wenn ich z.b. in einer Batch Datei notepad.exe aufrufe, dann läuft die Batch Datei erst weiter, wenn ich das Programm notepad schliesse.
Das gleiche wäre für den Explorer oder den calc.
Wie kann man diesen "Stop" umgehen ???
wenn ich z.b. in einer Batch Datei notepad.exe aufrufe, dann läuft die Batch Datei erst weiter, wenn ich das Programm notepad schliesse.
Das gleiche wäre für den Explorer oder den calc.
Wie kann man diesen "Stop" umgehen ???
19 Antworten
- LÖSUNG Biber schreibt am 17.07.2006 um 14:32:02 Uhr
- LÖSUNG 6741 schreibt am 17.07.2006 um 14:40:53 Uhr
- LÖSUNG AxelHahn schreibt am 17.07.2006 um 15:22:15 Uhr
- LÖSUNG rc-computer schreibt am 17.07.2006 um 15:25:07 Uhr
- LÖSUNG 6741 schreibt am 17.07.2006 um 15:32:42 Uhr
- LÖSUNG AxelHahn schreibt am 17.07.2006 um 16:14:11 Uhr
- LÖSUNG 6741 schreibt am 17.07.2006 um 16:24:51 Uhr
- LÖSUNG Biber schreibt am 17.07.2006 um 16:28:32 Uhr
- LÖSUNG AxelHahn schreibt am 17.07.2006 um 16:31:15 Uhr
- LÖSUNG AxelHahn schreibt am 17.07.2006 um 16:42:13 Uhr
- LÖSUNG 6741 schreibt am 17.07.2006 um 16:43:40 Uhr
- LÖSUNG Biber schreibt am 17.07.2006 um 16:48:56 Uhr
- LÖSUNG AxelHahn schreibt am 17.07.2006 um 17:11:40 Uhr
- LÖSUNG Biber schreibt am 17.07.2006 um 17:34:24 Uhr
- LÖSUNG 6741 schreibt am 17.07.2006 um 19:00:26 Uhr
- LÖSUNG Biber schreibt am 17.07.2006 um 17:34:24 Uhr
- LÖSUNG AxelHahn schreibt am 17.07.2006 um 17:11:40 Uhr
- LÖSUNG 6741 schreibt am 17.07.2006 um 16:24:51 Uhr
- LÖSUNG AxelHahn schreibt am 17.07.2006 um 16:14:11 Uhr
- LÖSUNG 6741 schreibt am 17.07.2006 um 15:32:42 Uhr
- LÖSUNG 6741 schreibt am 17.07.2006 um 14:40:53 Uhr
- LÖSUNG TheIch schreibt am 17.07.2006 um 19:34:55 Uhr
- LÖSUNG 6741 schreibt am 18.07.2006 um 08:24:15 Uhr
- LÖSUNG AxelHahn schreibt am 18.07.2006 um 08:55:15 Uhr
- LÖSUNG Biber schreibt am 18.07.2006 um 08:57:33 Uhr
- LÖSUNG 6741 schreibt am 18.07.2006 um 08:24:15 Uhr
LÖSUNG 17.07.2006 um 14:32 Uhr
Moin fwd,
mach den Aufruf in der *.bat-Datei mit
....
Start "wattuwillst" notepad.exe
-bzw-
Start x:\pfad\meinNeuer.txt
(wenn zum Beispiel *.txt-Dokumente bei Dir standardmäßig mit Notepätt.exe aufgerufen werden würden).
Hilfe zum Start-Befehl vom CMD-Prompt aus mit
Start /?
Gruß
Biber
mach den Aufruf in der *.bat-Datei mit
....
Start "wattuwillst" notepad.exe
-bzw-
Start x:\pfad\meinNeuer.txt
(wenn zum Beispiel *.txt-Dokumente bei Dir standardmäßig mit Notepätt.exe aufgerufen werden würden).
Hilfe zum Start-Befehl vom CMD-Prompt aus mit
Start /?
Gruß
Biber
LÖSUNG 17.07.2006 um 14:40 Uhr
uiii
fine ..
ein hab ich noch ...
ich möchte einen Prozess abfragen ist der da, dann solls weiter gehen ....
z.b. ist notepad geöffnet ( überprüfen ) dann mail schreiben ( z.b. mit sendmail.exe )
wie kann ich den Prozess abfragen ??
fine ..
ein hab ich noch ...
ich möchte einen Prozess abfragen ist der da, dann solls weiter gehen ....
z.b. ist notepad geöffnet ( überprüfen ) dann mail schreiben ( z.b. mit sendmail.exe )
wie kann ich den Prozess abfragen ??
LÖSUNG 17.07.2006 um 15:22 Uhr
Wenn ein neueres Win da ist (vielleicht auch ab Win2000 ?? - weiss ich jetzt nicht):
Das Tool wird dir helfen
%WINDOR%\system32\tasklist
In dessen Ausgabe mit findstr ab Zeilenanfang suchen:
tasklist.exe | findstr "^mein_Programm" && goto gefunden
echo Programm wird derzeit nicht ausgefuehrt.
goto ende
:gefunden
echo Das Programm ist gestartet.
(...)
Axel
Das Tool wird dir helfen
%WINDOR%\system32\tasklist
In dessen Ausgabe mit findstr ab Zeilenanfang suchen:
tasklist.exe | findstr "^mein_Programm" && goto gefunden
echo Programm wird derzeit nicht ausgefuehrt.
goto ende
:gefunden
echo Das Programm ist gestartet.
(...)
Axel
LÖSUNG 17.07.2006 um 15:25 Uhr
Hi,
mit dem befehl `tasklist' siehst du die laufenden Prozesse
mit dem befehl `tasklist' siehst du die laufenden Prozesse
@echo off
:: Beispielsweise explorer.exe
tasklist | find /i "explorer.exe" > nul
:: wenn explorer.exe "existiert" dann "mach dies"
if %errorlevel% == 0 (
echo mach dies
)
LÖSUNG 17.07.2006 um 15:32 Uhr
jetzt müsste ich nur noch eine Schleife haben ...
die immer wieder überprüft ob der prozess da ist
wenn da dann zum punkt da, wenn nicht dabb wieder von vorne ( evtl ein kleinen Wait ( 30-60sec ))
okay bin etwas weiter ...
_______________________________________________________________________
:start
@ echo off
tasklist.exe | findstr "abc" && goto gefunden
echo Programm wird derzeit nicht ausgefuehrt.
goto start
:gefunden
echo Das Programm ist gestartet.
goto start
_______________________________________________________________________
jetzt müsste ich noch ein wait einsetzen, gibt es aber unter XP nicht was kann man alternative einsetzen ... ???
so ca. 60 sec Warten ...
die immer wieder überprüft ob der prozess da ist
wenn da dann zum punkt da, wenn nicht dabb wieder von vorne ( evtl ein kleinen Wait ( 30-60sec ))
okay bin etwas weiter ...
_______________________________________________________________________
:start
@ echo off
tasklist.exe | findstr "abc" && goto gefunden
echo Programm wird derzeit nicht ausgefuehrt.
goto start
:gefunden
echo Das Programm ist gestartet.
goto start
_______________________________________________________________________
jetzt müsste ich noch ein wait einsetzen, gibt es aber unter XP nicht was kann man alternative einsetzen ... ???
so ca. 60 sec Warten ...
LÖSUNG 17.07.2006 um 16:14 Uhr
Hallo,
Mit dem ping kann man eine Pause machen - Ein Sleep gibt es noch im Ressource Kit oder mit zusätzlichen Kommandozeilentools.
Ein ping /n 31 localhost >nul ... wartet 30 Sekunden - also so:
:loopstart
tasklist.exe | findstr "^mein_Programm" && goto gefunden
echo warte 30 sec ...
ping /n 31 localhost >nul
goto loopstart
echo Programm wird derzeit nicht ausgefuehrt.
goto ende
:gefunden
echo Das Programm ist gestartet.
(...)
Axel
Mit dem ping kann man eine Pause machen - Ein Sleep gibt es noch im Ressource Kit oder mit zusätzlichen Kommandozeilentools.
Ein ping /n 31 localhost >nul ... wartet 30 Sekunden - also so:
:loopstart
tasklist.exe | findstr "^mein_Programm" && goto gefunden
echo warte 30 sec ...
ping /n 31 localhost >nul
goto loopstart
echo Programm wird derzeit nicht ausgefuehrt.
goto ende
:gefunden
echo Das Programm ist gestartet.
(...)
Axel
LÖSUNG 17.07.2006 um 16:24 Uhr
danke ...
nette Hilfe ...
warum steht der Wert auf 31 und nicht auf 30 gibt es da einen Grund ???
manmal steht da "Das Programm ist gestartet"
und dann wieder der Prozess ... abc.exe xxxx Console 0 3.555k usw
etwas komisch .. teste mal selbst
nette Hilfe ...
warum steht der Wert auf 31 und nicht auf 30 gibt es da einen Grund ???
manmal steht da "Das Programm ist gestartet"
und dann wieder der Prozess ... abc.exe xxxx Console 0 3.555k usw
etwas komisch .. teste mal selbst
LÖSUNG 17.07.2006 um 16:28 Uhr
warum steht der Wert auf 31 und nicht auf 30 gibt es da einen Grund ???
Mengenrabatt.
Du packst ja auch 31 Fragen in einen Beitrag...
Wahre Antwort: Ping.exe ist ja eigentlich nicht zum Zeitmessen/Pause machen konzipiert.
Irgendeine Computerzeitschrift hat das mal aufgeschnappt und darauf hingewiesen, dass eine halbe Minute mit ping.exe warten nicht exakt 30,000 Sekunden ( = Dreissigtausend Millisekunden) bedeutet.
Wenn man/frau denn sichergehen wollte, dass tatsächlich mindestens 30 Sekunden um sind, dann: eine Sekunde MEHR angeben.
Und Generationen haben es nachgeplappert...
Kannst auch 28 hinschrieben oder 33.... wird auch mal genau treffen.
Biber
LÖSUNG 17.07.2006 um 16:31 Uhr
Hallo,
der ping erfolgt unter Win jede Sekunde einmal. Der erste Ping sofort. Daher ist bei n Sekunden Pause (n+1) mal das Ping auszuführen.
http://www.axel-hahn.de/axel/page_compi/bat_tipps.htm#wait
OT:
Das ist etwa so die klassische Knobelaufgabe: der Dr. verschreibt 10 Tabletten - ich soll jeden halben Tag eine nehmen. Wie lange reichen die Tabletten?

Axel
der ping erfolgt unter Win jede Sekunde einmal. Der erste Ping sofort. Daher ist bei n Sekunden Pause (n+1) mal das Ping auszuführen.
http://www.axel-hahn.de/axel/page_compi/bat_tipps.htm#wait
OT:
Das ist etwa so die klassische Knobelaufgabe: der Dr. verschreibt 10 Tabletten - ich soll jeden halben Tag eine nehmen. Wie lange reichen die Tabletten?
Axel
LÖSUNG 17.07.2006 um 16:42 Uhr
@Biber:
Klar ist ping eine absolute Krücke, aber die einzige Hilfe mit Windows-Boardmitteln eine Pause einzulegen (aus der Default-CD-Installation heraus - RK schleift das sleep ja mit).
Ich weiss schon, warum ich mir die Bash installiert habe. Aber das führt jetzt hier zu weit ...
Axel
Klar ist ping eine absolute Krücke, aber die einzige Hilfe mit Windows-Boardmitteln eine Pause einzulegen (aus der Default-CD-Installation heraus - RK schleift das sleep ja mit).
Ich weiss schon, warum ich mir die Bash installiert habe. Aber das führt jetzt hier zu weit ...
Axel
LÖSUNG 17.07.2006 um 16:43 Uhr
wäre die Frage wann du beim Arzt warst ... ;>)))
rennt prima
Danke !!!
rennt prima
Danke !!!
LÖSUNG 17.07.2006 um 16:48 Uhr
@Axel:
So sehr ich Deine Homepage schätze... das glaube ich nicht.
Rein theoretisch mag das (analog zum Tabletten-Einwerfen) stimmen, aber das es im (annähernd) genauen Sekundentakt funktioniert, ...niemals.
Ich sach: ping mir 31x.
Ping sacht: OK.
Ping pingt (nach dem Starten und dem OK-Sagen...also bei t+Vierzehntelsekunden).
Der Ping geht über 7 Brücken... ist erledigt nach weiteren 3einhalb Zehntelsekunden.
Zeit steht bei t+Vierzehntel+Dreieinhalbzehntel.
Wie lang wird jetzt bis zum nächsten Pingen gewartet??
Bis t+1sek?
Oder bis t+0,75 Sek + 1 Sek??
Grüße
Frank
[Edit]
P.S. Inzwischen haben auch die beiden anderen geantwortet...
@Axel: Nicht falsch verstehen .. ich wäre der Allerletzte, der M$-Software in Schutz nimmt.
Dafür hab ich Zeugen hier im Forum... *gg
[/Edit]
So sehr ich Deine Homepage schätze... das glaube ich nicht.
Rein theoretisch mag das (analog zum Tabletten-Einwerfen) stimmen, aber das es im (annähernd) genauen Sekundentakt funktioniert, ...niemals.
Ich sach: ping mir 31x.
Ping sacht: OK.
Ping pingt (nach dem Starten und dem OK-Sagen...also bei t+Vierzehntelsekunden).
Der Ping geht über 7 Brücken... ist erledigt nach weiteren 3einhalb Zehntelsekunden.
Zeit steht bei t+Vierzehntel+Dreieinhalbzehntel.
Wie lang wird jetzt bis zum nächsten Pingen gewartet??
Bis t+1sek?
Oder bis t+0,75 Sek + 1 Sek??
Grüße
Frank
[Edit]
P.S. Inzwischen haben auch die beiden anderen geantwortet...
@Axel: Nicht falsch verstehen .. ich wäre der Allerletzte, der M$-Software in Schutz nimmt.
Dafür hab ich Zeugen hier im Forum... *gg
[/Edit]
LÖSUNG 17.07.2006 um 17:11 Uhr
ich denke, wir sind uns da einig:
wenn man etwas artverwandtes wie Zeitmessung braucht (oder auf Performance achten muss), sollte man Batchlösungen knicken. Bei der Wartezeit von 30 Sek ist es egal, ob man nun 27 oder 38 schreibt - es bleibt "etwa" eine halbe Minute und fertig.
Es ging nur ums Prinzip - bei Wartepausen von 2..5 Sekunden kann man mit dem Verfahren (n+1) Sekunden arbeiten. Bei einer halben Minute oder was auch immer kann man sich so seinen groben Werten in die Zeile setzen. Das spielt selbstverständlich keine Rolle mehr.
btw:
Unter Windows kann man gar nicht im Tausendstel-Sekunden-Bereich messen. gettickcount gibt zwar etwas in Millisekunden zurück, aber das System ist so getaktet, dass man Abtastraten von ca. 25 ms hat. Bei deiner Messung (oder Ausgaben unten) bitte aufpassen
Rein für Anhaltswerte (ohne Angabe von Standardabweichung, Mittelwertten oder sonstigem staistischen Kram):
Hier mal die Ausgabe mit dem Time-Kommando (aus CYGWIN):
bash-2.05b$ time ping /n 10 localhost >nul
real 0m9.057s
user 0m0.015s
sys 0m0.015s
bash-2.05b$ time ping /n 20 localhost >nul
real 0m19.055s
user 0m0.015s
sys 0m0.015s
bash-2.05b$ time ping /n 30 localhost >nul
real 0m29.052s
user 0m0.030s
sys 0m0.000s
Ich denke, die Formel kommt recht gut hin.
Wo kann man den Thread jetzt schliessen ??
wenn man etwas artverwandtes wie Zeitmessung braucht (oder auf Performance achten muss), sollte man Batchlösungen knicken. Bei der Wartezeit von 30 Sek ist es egal, ob man nun 27 oder 38 schreibt - es bleibt "etwa" eine halbe Minute und fertig.
Es ging nur ums Prinzip - bei Wartepausen von 2..5 Sekunden kann man mit dem Verfahren (n+1) Sekunden arbeiten. Bei einer halben Minute oder was auch immer kann man sich so seinen groben Werten in die Zeile setzen. Das spielt selbstverständlich keine Rolle mehr.
btw:
Unter Windows kann man gar nicht im Tausendstel-Sekunden-Bereich messen. gettickcount gibt zwar etwas in Millisekunden zurück, aber das System ist so getaktet, dass man Abtastraten von ca. 25 ms hat. Bei deiner Messung (oder Ausgaben unten) bitte aufpassen
Rein für Anhaltswerte (ohne Angabe von Standardabweichung, Mittelwertten oder sonstigem staistischen Kram):
Hier mal die Ausgabe mit dem Time-Kommando (aus CYGWIN):
bash-2.05b$ time ping /n 10 localhost >nul
real 0m9.057s
user 0m0.015s
sys 0m0.015s
bash-2.05b$ time ping /n 20 localhost >nul
real 0m19.055s
user 0m0.015s
sys 0m0.015s
bash-2.05b$ time ping /n 30 localhost >nul
real 0m29.052s
user 0m0.030s
sys 0m0.000s
Ich denke, die Formel kommt recht gut hin.
Wo kann man den Thread jetzt schliessen ??
LÖSUNG 17.07.2006 um 17:34 Uhr
Wo kann man den Thread jetzt schliessen ??
Das kann in diesem Fall nur der Thread-Ersteller (der zielsicher seine Batch-Frage unter "Windows" gepostet hat) oder einer der Mods in diesem Bereich.@fwd: Büdde nächstes Mal Batchkrams in "Batch & Shell" stellen...da hätte diese Diskussion viel besser gepasst...
"Windows" passt nicht so ganz 100%... ist so ähnlich wie in unserer Kantine.
Die sagen immer ganz überzeugend: "Bratensoße passt immer!"
Na ja, auf den Teller schon... aber auch das würde zu weit führen jetzt...
Schönen Nachmittag
Biber
LÖSUNG 17.07.2006 um 19:00 Uhr
Hi @all ...
der weg führt zum ziel ...
Aufgabe mit wenig "Aufwand" erledigt ..
ne VB wäre mir auch lieber, kann ich aber nicht ...
gucke beim nächsten mal auch genau aufs Forum Sub Dir
der weg führt zum ziel ...
Aufgabe mit wenig "Aufwand" erledigt ..
ne VB wäre mir auch lieber, kann ich aber nicht ...
gucke beim nächsten mal auch genau aufs Forum Sub Dir
LÖSUNG 17.07.2006 um 19:34 Uhr
schreib einfach ma start davor.... also start notepad.exe zum beispiel. ich würd sagen, dass das funktioniert
MfG
TheIch
verfdammt...erst lesen, dann posten. admin bitte löschen! tut mir leid, is schon spät heut
MfG
TheIch
verfdammt...erst lesen, dann posten. admin bitte löschen! tut mir leid, is schon spät heut
LÖSUNG 18.07.2006 um 08:24 Uhr
Moin und Danke nochmals ...
würde gerne noch eine Bedingung klären ....
wie kann ich das Abfragen ?
wenn ein Prozess eine gewisse Speichergröße erreicht soll der Prozess gestopt bzw gekillt werden..
wer hat dazu eine Idee ?
Es gibt ein Programm bei uns das bleibt ab einen Speichernutzung von ca. 400MB stehen, ist das errreicht würde die die EXE killen.
Danke ...
würde gerne noch eine Bedingung klären ....
wie kann ich das Abfragen ?
wenn ein Prozess eine gewisse Speichergröße erreicht soll der Prozess gestopt bzw gekillt werden..
wer hat dazu eine Idee ?
Es gibt ein Programm bei uns das bleibt ab einen Speichernutzung von ca. 400MB stehen, ist das errreicht würde die die EXE killen.
Danke ...
LÖSUNG 18.07.2006 um 08:55 Uhr
Frage:
Hast du
%windir%\system32\tasklist /?
aufgerufen?? Hier stehen die Kriterien, nach denen du filtern kannst (Speicherverbrauch, CPU-Time, ...). Inklusive Vergleichsoperatoren grösser/ kleiner/ gleich/ ...
Beispiele liefert die Hilfe-Ausgabe auch.
Zum Beenden des Prozesses gibt es im selben Ordner die taskkill.exe. Bitte auch einmal mit /? aufrufen.
Schönen Tag noch!
Axel
Hast du
%windir%\system32\tasklist /?
aufgerufen?? Hier stehen die Kriterien, nach denen du filtern kannst (Speicherverbrauch, CPU-Time, ...). Inklusive Vergleichsoperatoren grösser/ kleiner/ gleich/ ...
Beispiele liefert die Hilfe-Ausgabe auch.
Zum Beenden des Prozesses gibt es im selben Ordner die taskkill.exe. Bitte auch einmal mit /? aufrufen.
Schönen Tag noch!
Axel
LÖSUNG 18.07.2006 um 08:57 Uhr
...neue Frage, neuer Thread, fwd...
Setz bitte jetzt diesen Thread auf gelöst (unabhängig von der Brauchbarkeit meiner Antwort).
Unter dieser Überschrift in dieser Rubrik hat sonst kein(e) andere(r) eine Chance, hier eine passende Lösung für eigene Probleme zu finden, wenn Du immer wieder mit "Ach übrigens, da fällt mir ein..." neue Aspekte dranflanscht.
Im Batch:
...wobei "Speicherfresser.exe" der Name Deiner zu killenden *.exe-Datei ist und in der numerischen Variablen %SpeicherMax% vorher das Limit gesetzt wurde, z.B. so:
Set /a Speichermax=40000
Gruß
Biber
Setz bitte jetzt diesen Thread auf gelöst (unabhängig von der Brauchbarkeit meiner Antwort).
Unter dieser Überschrift in dieser Rubrik hat sonst kein(e) andere(r) eine Chance, hier eine passende Lösung für eigene Probleme zu finden, wenn Du immer wieder mit "Ach übrigens, da fällt mir ein..." neue Aspekte dranflanscht.
Im Batch:
....
for /f "tokens=6-7 delims=. " %%i in ('tasklist^|find /i "Speicherfresser.exe"') do if %%i%%j GEQ %Speichermax% kill "Speicherfresser.exe"
...wobei "Speicherfresser.exe" der Name Deiner zu killenden *.exe-Datei ist und in der numerischen Variablen %SpeicherMax% vorher das Limit gesetzt wurde, z.B. so:
Set /a Speichermax=40000
Gruß
Biber