Batch Taskill mit Messagebox?

2 Antworten

Warum erst Abfragen ob ein Prozess läuft?

Es ist ganz einfach, wir sagen Taskkill was es töten soll und lassen es gewähren.

Wenn nichts zu killen da war wird errorlevel 128 gesetzt. Der kann uns auch egal sein...

Wenn Taskkill erfolgreich (also kein errorlevel) , starten wir einen bedingten Aufruf (&&) des VBS...

(Fehler-)Meldungen von Taskkill werden total unterdrückt.

@echo off
start "" "notepad"
  rem VBS  mit  Mesagebox  erzeugen (ich  mach das  normalerweise  anders,  aber  möchte  einen  Anfänger  nicht  durcheinander bringen)
echo res=Msgbox("Du sollst  nicht  mit Notepad arbeiten! ",vbOKonly+vbExclamation, "TaskKiller") >"myMsg.vbs"

  rem hier  wirds  elegant:
  rem Taskkill  "tötet" Notepad .
  rem wenn dies erfolgreich war  wird  das zuvor generierte VBScript  gestartet
:loop
taskkill /f  /im "notepad.exe" >nul 2>&1   && (cscript /nologo "myMsg.vbs")
  rem  kleine  Pause sonst wird  der  Killprozess zu exzessiv
timeout 2 >nul
goto :loop

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

sry: echo res=Msgbox("Du sollst nicht mit Notepad arbeiten! ",vbOKonly+vbExclamation+vbSystemModal, "TaskKiller") >"myMsg.vbs"

0

Die Frage ist, was Du nun noch genau benötigst. Nur den Batch-Befehl oder auch das VBS-Script? Wenn Du über nur eine Batch-Datei herausbekommen willst, ob ein Programm läuft, dann geht das z.B. über:

tasklist /FI "IMAGENAME eq notepad.exe" 2>NUL | find /I /N "notepad.exe">NUL
if "%ERRORLEVEL%"=="0" (
    taskkill /IM notepad.exe /F
    start script.vbs  
)
Woher ich das weiß:Berufserfahrung