ralus67
Goto Top

Prozess beenden welcher eine bestimmte Datei verwendet

Hallo Community

Ich bin auf der Suche nach einer Lösung um einen bestimmten Prozess zu löschen, welcher von einer bestimmten Datei verwendet wird.

Die Lösung sollte wenn möglich über Powershell oder Batch ausgeführt werden

Ich habe folgendes ausprobiert

tasklist /FI "MODULES eq NppShell_06.dll"

Anschliessend wird mir folgendes angezeigt

Abbildname PID Sitzungsname Sitz-Nr. Speichernutzung
======= ==================== ======== ==================
explorer.exe 5916 Conosole 1 53'232 K

Nun möchte ich diese PID 5916 beenden, welche mir die NppShell_06.dll in Verwendung hält. Ich möchte keinen Taskkill auf den Namen explorer.exe durchführen, da sonst alle offenen explorer.exe Prozesse beendet weren.

Wie kann ich das lösen? Also suchen nach dll. PID ermitteln und diese beenden.....

Danke im Voraus für Eure Hilfe

Content-Key: 625589

Url: https://administrator.de/contentid/625589

Printed on: June 5, 2023 at 23:06 o'clock

Member: killtec
killtec Nov 25, 2020 at 09:18:48 (UTC)
Goto Top
HI,
du kannst im Taskkill auch die PID mit geben...

Gruß
Member: Doskias
Doskias Nov 25, 2020 at 09:22:07 (UTC)
Goto Top
Moin
Zitat von @killtec:
du kannst im Taskkill auch die PID mit geben...
in deinem Fall wäre es dann:
taskkill /pid 5916 
Member: Ralus67
Ralus67 Nov 25, 2020 at 09:30:41 (UTC)
Goto Top
taskkill /pid ist ein manueller Eingriff

Ich möchte, dass mir das Batch / Powershell Skript den Prozess finded, welche die DLL gesperrt hat. Diesen Prozess dann automatisch löschen
Mitglied: 146707
146707 Nov 25, 2020 updated at 09:36:11 (UTC)
Goto Top
Handle ist dein Freund...
taskkill /pid ist ein manueller Eingriff
Nö, wieso??
Member: Ralus67
Ralus67 Nov 25, 2020 at 09:41:40 (UTC)
Goto Top
Erklär mir bitte wie das lösen soll in einer Batch. Ich kenne die DLL aber die PID nicht.

tasklist /FI "MODULES eq NppShell_06.dll"

Die PID welche mir ausgegeben wird muss ausgelesen und zwischengespeichert werden z.B als Variable $TMPPid anschliessend dies $TMPPid kann anschliessen mit taskkill /pid $TMPPid gelöscht werden.

Ich hab mich vielleich nicht korrekt ausgedrückt. Die Frage war nicht wie ich es mit Taskkill lösche, sondern wie finde ich die entsprechende PID aus anhand des tasklist Befehls, wie lese ich diese PID aus und speichere diese ab, so dass ich dies anschliessend mit taskkill löschen kann.
Mitglied: 146707
146707 Nov 25, 2020 updated at 09:46:42 (UTC)
Goto Top
Wie immer bei sowas in 80er Batch die FOR-Schleife dein Freund!
@echo off
for /f "skip=3 tokens=2" %%a in ('tasklist /FI "MODULES eq NppShell_06.dll"') do taskkill /pid %%a
Member: Ralus67
Ralus67 Nov 25, 2020 at 09:48:12 (UTC)
Goto Top
Danke für den Input, das ist ein guter Lösungsansatz. Hättest du das Skript auch für Powershell?
Mitglied: 146707
146707 Nov 25, 2020 updated at 09:58:56 (UTC)
Goto Top
Zitat von @Ralus67:

Danke für den Input, das ist ein guter Lösungsansatz. Hättest du das Skript auch für Powershell?
Warum nicht gleich direkt explizit nach der PS Variante fragen? Erst die Leute hier schreiben lassen heute schon wieder Freitag ... Salamitaktik ­čÉč
gps | ?{$_.Modules.ModuleName -contains 'NppShell_06.dll'} | kill -Force -verbose
Member: Ralus67
Ralus67 Nov 25, 2020 at 10:42:05 (UTC)
Goto Top
danke, das war die Lösung
Mitglied: 146707
146707 Nov 25, 2020 updated at 10:55:13 (UTC)
Goto Top
Dann markiere diese bitte für die Nachwelt auch.