Task starten, beenden, prüfen CMD oder VBS
Task starten, beenden, prüfen CMD oder VBS
Ich möchte über Batch oder VBS prüfen ob ein Task gestartet ist, wenn er das ist, soll er beendet werden. Ist der Task nicht gestartet, soll er gestartet werden UND das alles in einem File
Funktionsweise (muss nicht richtig sein)
--------------------------------------
If running notepad.exe
end notepad.exe
else
start notepad.exe
end If
Wenn einer weiß wie man das mit VBS macht, wäre auch cool. Für Tipps und Hinweise wäre ich dankbar.
CU cqash
Ich möchte über Batch oder VBS prüfen ob ein Task gestartet ist, wenn er das ist, soll er beendet werden. Ist der Task nicht gestartet, soll er gestartet werden UND das alles in einem File
Funktionsweise (muss nicht richtig sein)
--------------------------------------
If running notepad.exe
end notepad.exe
else
start notepad.exe
end If
Wenn einer weiß wie man das mit VBS macht, wäre auch cool. Für Tipps und Hinweise wäre ich dankbar.
CU cqash
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 48419
Url: https://administrator.de/contentid/48419
Ausgedruckt am: 19.11.2024 um 05:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo cqash und willkommen im Forum!
Per Batch etwa auf diese Art:
und in VBScript könnte das so aussehen:
Grüße
bastla
P.S.: Was hast Du denn damit vor?
[Edit] "Beenden" in der Batchvariante vereinfacht (war vorher auf die Schnelle von oben kopiert) [/Edit]
Per Batch etwa auf diese Art:
@echo off & setlocal
set Tsk=notepad.exe
set Prog=%windir%\System32\notepad.exe
set Running=
for /f %%i in ('tasklist') do echo (%%i)|findstr /C:"(%Tsk%)" > nul && set Running=1
if defined Running goto :Beenden
start %Prog%
goto :eof
:Beenden
taskkill /IM %Tsk% >nul
strComputer = "."
strProcess = "notepad.exe"
strProgPath = "%SystemRoot%\system32\notepad.exe"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & strProcess & "'")
If colProcesses.Count = 0 Then 'läuft nicht, also starten
Set objShell = WScript.CreateObject ("WScript.Shell")
objShell.Run strProgPath
Else 'mindestens eine Instanz läuft - alle stoppen
For Each objProcess In colProcesses
objProcess.Terminate
Next
End If
Grüße
bastla
P.S.: Was hast Du denn damit vor?
[Edit] "Beenden" in der Batchvariante vereinfacht (war vorher auf die Schnelle von oben kopiert) [/Edit]
@miniversum
Nur als Anmerkung: Damit würdest Du aber "notepad.exe" nicht starten, wenn ein anderer Task mit dem Namensbestandteil "notepad.exe" (zB "MIDInotepad.exe") gerade läuft.
Grüße
bastla
Nur als Anmerkung: Damit würdest Du aber "notepad.exe" nicht starten, wenn ein anderer Task mit dem Namensbestandteil "notepad.exe" (zB "MIDInotepad.exe") gerade läuft.
Grüße
bastla
Bräuchte mal kurz eure Hilfe.
Ich habe einen Prozess der jedesmal beim einloggen mitgestartet wird.
Wenn ich das Script so starte, prüft dann das Script ob beim einloggen der Dienst läuft, wenn ja kill es den Dienst, wenn nein macht es nichts?
@echo off
set Programm=notepad.exe
tasklist |find /i "%Programm%" >nul
if %errorlevel% == 0 (
taskkill /IM %Programm%
Unter set Programm= muss ich dann exe Namen des Prozesses angeben?
Ich habe einen Prozess der jedesmal beim einloggen mitgestartet wird.
Wenn ich das Script so starte, prüft dann das Script ob beim einloggen der Dienst läuft, wenn ja kill es den Dienst, wenn nein macht es nichts?
@echo off
set Programm=notepad.exe
tasklist |find /i "%Programm%" >nul
if %errorlevel% == 0 (
taskkill /IM %Programm%
Unter set Programm= muss ich dann exe Namen des Prozesses angeben?
Hallo aschinnerl!
Wenn Du nur den Task beenden willst, genügt:
Erklärung: Ist der Task "notepad.exe" vorhanden, wird er beendet, wenn nicht, wird die Fehlermeldung mit "2>nul" unterdrückt.
Grüße
bastla
Wenn ich das Script so starte, prüft dann das Script ob beim einloggen der Dienst läuft, wenn ja kill es den Dienst, wenn nein macht es nichts?
Das Script prüft, wenn es ausgeführt wird - wenn es daher beim Einloggen gestartet wird (Login-Script, Autostart): jaWenn Du nur den Task beenden willst, genügt:
taskkill /IM notepad.exe 2>nul
Unter set Programm= muss ich dann exe Namen des Prozesses angeben?
Ganz allgemein: der Name, der Dir bei Verwendung des Befehles "tasklist" angezeigt wirdGrüße
bastla
Hallo,
habe zu dem Thema in einem anderen Thread schon eine Frage gestellt, würde es aber gern hier nochmal probieren.
Googeln hat nichts gebracht.
Ich möchte, nicht abfrage ob die die exe läuft sondern ob der Taskname läuft.
Wenn man im Windows Taskmanager schaut. Gibt es ja mehre Spalten.
Einmal die Prozess Spalte wo die Datei.exe steht und Username.
Dann aber gibt es auch das Register Anwendung wo man den Windowstitel sieht.
Beispiel:
Prozess: notepad.exe
Anwendung: unbenannt - notepad
Ich möchte, wie gesagt den Anwendungsnamen abfragen, am liebsten mit VBS.
Hat jemand eine Idee ??
Lg
Dennis
habe zu dem Thema in einem anderen Thread schon eine Frage gestellt, würde es aber gern hier nochmal probieren.
Googeln hat nichts gebracht.
Ich möchte, nicht abfrage ob die die exe läuft sondern ob der Taskname läuft.
Wenn man im Windows Taskmanager schaut. Gibt es ja mehre Spalten.
Einmal die Prozess Spalte wo die Datei.exe steht und Username.
Dann aber gibt es auch das Register Anwendung wo man den Windowstitel sieht.
Beispiel:
Prozess: notepad.exe
Anwendung: unbenannt - notepad
Ich möchte, wie gesagt den Anwendungsnamen abfragen, am liebsten mit VBS.
Hat jemand eine Idee ??
Lg
Dennis