Назад | Перейти на главную страницу

Передайте PID из списка задач в taskkill, чтобы убить процесс с помощью .dll, которые он держит открытыми

Здесь нет сценариев Windows. Скажем, у меня есть имя .dll, которое мне нужно удалить или скопировать, и я получаю классическую ошибку «Файл используется другим процессом ...». Я знаю, что могу запустить список задач с переключателем / m и передать ему имя dll. Затем я могу получить PID для процессов и убить их с помощью taskkill.

Как я могу сделать это за один шаг в пакетном файле?

Напоминание: в пакетном файле вам нужно будет использовать двойной "%%" вместо одиночного

FOR /F "usebackq tokens=2 skip=2" %i IN (`tasklist /m winsta.dll`) DO taskkill /PID %i

FOR / F "usebackq tokens = 2 skip = 2" %% i IN (TASKLIST /FI "IMAGENAME eq tomcat6.exe") DO taskkill / F / PID %% i

автоматически убьет процесс tomcat.

Goyuix,

Кажется, я не могу получить результаты списка задач для анализа. FOR / F "usebackq tokens = 2 skip = 2"% i IN ('tasklist / m winsta.dll') DO echo% i Сама по себе команда tasklist хороша, но цикл не распознает результаты tasklist. Скорее похоже, что он разбирает строку. Я могу вывести результаты списка задач в файл и проанализировать с помощью цикла, но я подумал, что мне может не хватать чего-то простого.

Ага. просто. обратная цитата, а не одинарная кавычка.