Hey nicht schlecht - bist ja forschungsmäßig richtig aktiv gewesen!
Quote:Also habe mich im INternet vergraben und fast aussichtslos nach "Batchskript bleibt hängen" oder ähnlichem gegoogelt. Wie geschrieben, fast aussichtslos, aber nur fast, denn gerade wollte ich aufgeben als ich an inregdeiner Stelle las, das die Gänsefüsschen dazu führen, dass das was dazwischen ist in ein neues cmd Fenster aufgemacht wird. Somit hat sich für mich die Sache mit dem start was ich oben getestet habe. Also dachte ich mir...was wäre wenn zwischen den Gänsefüsschen NICHTS steht, sprich einfach "", also sah mein Pfad so aus:
Code:
start "" "C:\Program Files (x86)\Kaspersky Lab\Kaspersky Security Scan 2.0\kss.exe"
Ausgeführt und wunder... kein neues cmd Fenster und das wichtigste das Skript lief bis zu Schluß und beendete sich Laut lachend
Das kann ich so nicht nachvollziehen, zumal Du dabei auch 2 Dinge verwechselt. Schau zuvor mal in die Kurzhilfe des Befehls:
start /?Der Befehl startet immer ein weiteres CMD-Fenster, mehr oder weniger deutlich.
Die ersten Gänsefüßchen schließen einfach einen optionalen Fenstertitel (z.B. "KSS-Dienst") ein - bleiben sie leer erhält das neue Fenster keinen speziellen Titel, werden sie nicht verwendet kommt der Standard-Titel zum Einsatz.
Aber wenn ein Leerstring an dieser Stelle bewirkt daß kein sichtbares (?) Fenster gestartet wird is ja gut und für Dein Anliegen genau richtig. Solltest nur mal per Taskmanager kontrollieren ob dann nicht doch ein Zombiefenster entsteht, welches lediglich unsichtbar bleibt.
In meinem Beispiel habe ich den Titel nur aus dem Grund gewählt daß man dieses Fenster hinterher gezielt abschiessen kann.
Die zweiten Gänsefüßchen existieren quasi nicht aus Sicht des Befehls. An dieser Stelle wird ein Dateiobjekt erwartet und sie bewirken nur daß der gesamte Pfad inkl. Leerzeichen als solches übergeben wird.
Quote:Muss vor ping das @ Zeichen stehen?
Das @ am Anfang muß genausowenig da stehen wie ">nul:" am Schluss. Beides ist für die Funktion nicht relevant. Laß sie jeweils weg und schau wie's dann aussieht.
Quote:Dann muss localhost als Wort da stehen oder eine IP Adresse?
localhost IST quasi eine IP-Adresse, und zwar 127.0.0.1 - der eigene Rechner also. Du kannst auch beliebige andere Ziele angeben aber dann variiert die Ausführungszeit eben in Abhängig von deren Erreichbarkeit. Unschön.
Quote:Eine Sekunde Verzögerung ist ein bisschen wenig, vielleicht gebe ich ihm 5 sekunden.
Wenn Du 5s willst nimm diesen Befehl:
@ping -n 15 localhost >nul:3 Pings auf LOCALHOST dauern etwa 1s, bei 15 sind's also ~5s.
Quote:ähm, ich denke wenn ich die Zeile wieder so schreibe, wird sich der Skript wieder aufhängen. Ich habe die Pfadzeile mit dem start und "" einfach wieder verwendet. Hm, oder doch nicht aufhängen, weil ja vorher bereits ausgeführt wurde? Naja , muss ich testen.
Genau - nicht glauben sondern ausprobieren

.
Quote:Du hast nicht mehr über die Deaktivierung des Dienstes sc config "KSS" start= disabled geschrieben. Ist das Absicht? Ich denke ich MUSS den Dienst dann deaktivieren, ansonsten ist er beim nächsten Start wieder automatisch aktiv und im Hintergrund.
Soweit waren wir noch nicht! Bisher knobeln wir noch am vorherigen Schritt herum.
Womöglich läßt sich der Dienst aber auch nicht oder nicht so einfach deaktivieren - wenn man ihn schon nicht stoppen kann. Aber auch hier - Versuch macht klug. Weißt ja - SC CONFIG ...
Mal abgesehen von den derzeitigen Experimenten - ist dieser Dienst beim Systemstart denn immer gleich "freiwillig" schon da und aktiv oder aktiviert er sich erst beim ersten Aufruf?
Quote:Das ist OK. im ist die Bezeichnung des Prozesses zum KIllen, in deinem Beispiel cmd.exe, warum? Gehst du vom zusätzlich geöffneten cmd-Fenster aufgrund von start "KSS-Dienst"weiter oben aus?
Ich will da ja nur das Zombie-CMD-Fenster killen und nicht den KSS.EXE. Deshalb verwende ich auch die /t Option nicht. Könnte nämlich sein daß dann der Tochterprozess KSS.EXE mitgekillt wird. Muß aber nicht. Ausprobieren falls das Bedürfnis besteht.
Wie gesagt sind wir bisher ja erst an dem Punkt das Ding erstmal zu starten.
Quote:Dann sollte kss.exe gekillt werden oder? Also wie wäre so was
Code:
taskkill /f /im kss.exe /t
Es sind 2 kss.exe Prozesse im Taskmanager, deswegen denke ich dass /t genau passt. Oder sogar die beiden PID sauch eingebaut, vorsichtshalber Zwinkernd
Code:
taskkill /f /im kss.exe /PID xxx /PID yyy /t
So?
Wenn Du den KSS.EXE killen willst solltest Du natürlich durch /t die Tochterprozesse mit abschiessen. Ein und denselben Prozess sowohl mit /im als auch mit /pid zu adressieren macht keinen Sinn. Bei Verwendung von /pid taucht zudem das Problem auf daß man die PID ja erstmal rausfinden muß und das ist per Skript schon ein gewisser Aufwand.
Ob sich der Dienst durch's Abschiessen auf deaktiviert stellt (und sich beim nächsten Bootvorgang dann zurückhält) mußt Du ausprobieren. Glaube eher nicht. Ist jedenfalls eher unüblich so mit seinem System umzuspringen

und daher habe ich diesbezüglich auch keine Erfahrungswerte...
Wenn Du mit TASKKILL experimentieren willst solltest Du Dir auch hier erstmal die Kurzhilfe anschauen:
taskkill /?Dann brauchst Du nicht immer Google bemühen.
In dieser Weise funktioniert das bei den allermeisten Kommandozeilenbefehlen unter Windows.
Generell (= meistens

) kannst Du Dir diese Ausgabe auch in eine Datei umlenken, um sie beispielsweise ständig in einem Editorfenster vor AUgen haben zu können:
taskkill /? >c:\taskkill.txt