h3llraid3r Geschrieben 19. März 2009 Geschrieben 19. März 2009 Hallöchen... Folgendes Problem: Wie ich einen Task beende ist klar (schtasks /end etc). Wenn ich dies nun aber in der Kommandozeile ausführe, beendet er zwar den Task, aber die Batch-Datei, die durch den Task gestartet wurde, läuft trotzdem noch weiter. Gibt es eine Möglichkeit einen Task wirkungsvoll zu beenden, so dass auch die Programme/Skripte die durch ihn gestartet wurden beendet werden? Hintergrund des Ganzen: Es laufen bei uns Geplante Tasks (automatisch jeden Tag), die jedoch nur eine bestimmte Zeit lang ausgeführt werden sollen (bspw. Task startet um 8 Uhr, 8:30 wird er dann beendet). Zitieren
bytebrain Geschrieben 19. März 2009 Geschrieben 19. März 2009 Servus, ich denke es geht um Windows, richtig? Hm, ich hab grad kein Windows zur Hand, deswegen kann es sein, das ich was nicht ganz so richtiges erzähle Schau dir mal "taskkill" an (taskkill /?). Dieses Programm schließt Prozesse mit allen Unterprozessen etc.. Vielleicht hilft dir das ja weiter. Gruß, bytebrain Zitieren
h3llraid3r Geschrieben 19. März 2009 Autor Geschrieben 19. März 2009 Ja, dreht sich um Windows Server 2003... Das mit TaskKill wäre eine schöne Sache, da aber über den Task eine Batch-Datei ausgeführt wird, taucht diese natürlich so nicht auf... Idee die mir dabei gerade kam: Da die Batch ja über die Kommandozeile läuft, was passiert wenn ich die cmd.exe einfach beenden lassen? bewirkt das den gewünschten Effekt? Zitieren
robotto7831a Geschrieben 19. März 2009 Geschrieben 19. März 2009 Darf man mal fragen was denn in der Batchdatei getan wird? Vielleicht kann man diese durch ein Windows Skript ersetzen wo man Datum bzw. Uhrzeit prüfen kann. Frank Zitieren
bytebrain Geschrieben 19. März 2009 Geschrieben 19. März 2009 Ja, dreht sich um Windows Server 2003... Das mit TaskKill wäre eine schöne Sache, da aber über den Task eine Batch-Datei ausgeführt wird, taucht diese natürlich so nicht auf... Mööp, das stimmt nicht Mit taskkill kannst du _alle_ Prozesse beenden, die du auch im Taskmanager siehst. Du kannst entweder die Prozessbezeichnung angeben oder eine Prozess-ID. Somit solltest du auch ohne Probleme das batch-Script beenden können. Gruß, bytebrain Zitieren
h3llraid3r Geschrieben 19. März 2009 Autor Geschrieben 19. März 2009 @robotto7831a Ist ein recht kompliziertes und aufwändiges Skript, keinesfalls anderweitig realisierbar @bytebrain Also wenn die Batch ausgeführt wird, hab ich ja nur das svchost-Fenster als Task-Fenster im Taskmanager... daher gibt es weder eine seperate PID noch nen eigenen Anzeigenamen dafür... Zitieren
bytebrain Geschrieben 19. März 2009 Geschrieben 19. März 2009 Hm... Dann is doof. Allerdings kann ich mir wenig vorstellen, das es für dein batch-Script keine eigene pid geben soll :confused: Aber wenn taskkill nicht für deine Zwecke geeignet ist, dann weiß ich leider auch nicht. Gruß, bytebrain Zitieren
h3llraid3r Geschrieben 19. März 2009 Autor Geschrieben 19. März 2009 Gibt aber keine PID also klar gibt es die, weil ich ja nur die entsprechende svchost killen müsste. Bei 5-6 svchosts wird das dann aber schon zum Glücksspiel... Gibts denn keine andere möglichkeit per Konsole/Batch nen Prozess mit dazugehörigem Batch-Skript zu stoppen? Zitieren
bytebrain Geschrieben 19. März 2009 Geschrieben 19. März 2009 Kannst du dann nicht den kompletten Task-Dienst von MS stoppen Nee, sorry. Ich wüsste jetzt auf anhieb nix Gruß, bytebrain Zitieren
diemah Geschrieben 19. März 2009 Geschrieben 19. März 2009 bei dem geplanten Task kannst du einstellen nach welcher Zeit (Stunden/Minuten) er beendet werden soll (Reiter "Einstellungen"). Zitieren
h3llraid3r Geschrieben 19. März 2009 Autor Geschrieben 19. März 2009 DAS hatte ich mir anfangs auch gedacht diemah... Aber nach kurzem Überlegen war mir schnell klar warum das nicht funktioniert: Der Task startet ja nur die Batch, danach haben die beiden nichts mehr miteinander zu tun... Der Task wurde dann ordnungsgemäß beendet und die Batch lief munter weiter Zitieren
Boro Geschrieben 19. März 2009 Geschrieben 19. März 2009 (bearbeitet) Der Task wurde dann ordnungsgemäß beendet und die Batch lief munter weiter Kannst du das Script vieleicht mal posten? Vermute mal du arbeitest mit schleifen oder verzweigten Bedingungen, oder? Ansonsten würde ich innerhalb der Batchdatei das "exit" am Ende bzw. in der gewünschten Verzweigung einbauen. Die gestarten Tasks sollte das eigentlich nicht betreffen. Bearbeitet 19. März 2009 von Boro Zitieren
h3llraid3r Geschrieben 19. März 2009 Autor Geschrieben 19. März 2009 Klar sind da Schleifen etc drin, ist auch zu groß um das hier zu posten. Macht aber an sich auch keinen Unterschied. Der Grund ist einfach folgender: Die Batch sollte im Normalfall keine allzu lange Laufzeit haben. Danach wird eine andere Batch aufgerufen (ebenfalls per geplantem Task) die die selben Dateien verwendet wie schon die erste Batch. Sollte nun aber aus unerfindlichen Gründen die Laufzeit der ersten Batch so lange werden, dass es in die Ausführung der zweiten hineinreichen würde, so muss sichergestellt sein dass diese beendet wird/beendet ist. Und nein, es ist kein Aufruf von der einen in die andere Batch möglich... Zitieren
gelang(while)t Geschrieben 19. März 2009 Geschrieben 19. März 2009 hi... ich habe sowas ähnliches auch schonmal gemacht...hast du mal den Begriff "handle" gehört? Das müsste so eine Art Handlingnummer zu genau einem Prozess sein...d.h. wenn du dich informierst, kannst du vllt die Handlenummer deines Tasks ansprechen und anschließend an genau diese Handlenummer einen schließen Befehl schicken. Leider ist das bei mir schon ne Weile her, also müsste mich auch erst wieder rein lesen, aber schaumal ob du damit weiterkommst! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.