hi ich möchte mit einer batch eine andere batch starten und nach einer zeit NUR die gestartete batch schliessen. code sieht aktuell so aus: start Messung.cmd timeout /T %Messdauer% Exit Messung.cmd leider killt exit nicht die gestartete batch sonder sich selbst, was nicht sinn und zweck der sache ist.
taskkill killt mir auch nur das fenster in dem der befehl ausgeführt wird. ich will aber das andere fenster killen oder halt alle cmd fenster. lieber aber nur das eine
Die 2. Batch legt eine Datei an. Die 1. Batch prüft, ob die Datei existiert und beendet sich dann.
Du kannst mit
1 | TITLE Name |
deinem Batch Fenster einen Namen geben,
1 | TASKKILL /FI "WINDOWTITLE eq Name" |
beendet dann von zb. einem anderen Fenster aus das erste.
Das sind mal wieder die wunderbaren Windows Batch hacks. Mit einer sauberen Bourne shell könnte man das so einfach und sauber lösen:
1 | # Messdauer setzen |
2 | messdauer=5 |
3 | |
4 | # Messung starten & PID speichern |
5 | ./Messung.cmd & |
6 | PID=$! |
7 | |
8 | # Warten |
9 | sleep $messdauer |
10 | |
11 | # Progrsamm beenden |
12 | kill $PID |
Zu schade dass die Windowser keine Bourne shells benutzen, nicht dass sie nicht könnten, aber es ist ja nicht Vorinstalliert :)
@Daniel Abrecht (daniel-a) Da hast Du teilweise recht, ich arbeite da auch gerne mit. Aber die Windows Batch ist unterschätzt, wie ich einen Post über Dir geschrieben habe gibts da schon eine elegantere Lösung als das speichern der PID. Genauso wie scheinbar die wenigsten wissen das man auch in Windows Befehle mit | umleiten kann. Ein
1 | TASKLIST | FINDSTR |
wäre auch eine Möglichkeit an die PID eines Prozesses zu kommen. Gerade wenn man eben nur ein Windows mit Bordmitteln hat muss man darauf zurückgreifen. http://ss64.com/nt/ ist ne nette übersicht.
Tek schrieb: > Gerade wenn man eben nur ein Windows mit Bordmitteln hat … …sollte man cygwin installieren :)
c.m. schrieb: > Tek schrieb: > >> Gerade wenn man eben nur ein Windows mit Bordmitteln hat … > > …sollte man cygwin installieren :) Dann hat man aber kein Windwos mit Bordmitteln mehr... hab auch cygwin installiert, manchmal geht das aber halt net.
1 | start "MessungXYZ" Messung.cmd |
2 | timeout /T %Messdauer% |
3 | TASKKILL /FI "WINDOWTITLE eq MessungXYZ*" |
Nochmal etwas kompakter, das einzig unschöne ist das das Fenster dann den Titel "MessungXYZ - Messung.cmd" bekommt, darum der * im TASKKILL Filter
Tek schrieb: > Aber die Windows Batch ist unterschätzt, wie ich einen Post über Dir > geschrieben habe gibts da schon eine elegantere Lösung als das speichern > der PID. Genauso wie scheinbar die wenigsten wissen das man auch in > Windows Befehle mit | umleiten kann. Ich glaube du hast nicht erkannt worauf ich hinaus wollte. Es geht hier offensichtlich darum einen Prozess zu starten und später wieder zu Stoppen. Wärend man mit der Bash direckt eine PID bekommt, mit der man den Prozess eindeutig Identifizieren und Beenden kann, hat man in der Windows Batch keinen solchen Unique Identifier. Wenn man z.B. den Namen suchen muss, sei das mit "TASKLIST | FINDSTR" oder mit "TASKKILL /FI", der Name identifiziert die Anwendung nicht eindeutig. Auch wenn wohl niemand je ein Fenster/ein Prozess mit ebenfalls einem derartigem Namen erzeugen wird, ist dies dennoch ein möglicher Seiteneffekt, und genau deshalb bezeichne ich es als Unsauberen Windows Hack, denn der Code muss nicht immer nur das tun, was er tun soll. Falls es tatsächlich eine elegantere Lösung gibt, die den zu beendenden Prozess eindeutig identifizieren kann, lerne ich natürlich gerne dazu.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.