Подтвердить что ты не робот

Как остановить процесс из .BAT файла?

Итак, у меня есть процесс, который я начал с одного файла bat. Как остановить его от другого?

4b9b3361

Ответ 1

Чтобы завершить процесс, вы знаете имя, попробуйте:

taskkill /IM notepad.exe

Это попросит его закрыть, но он может отказаться, предложить "сохранить изменения" и т.д. Если вы хотите принудительно убить его, попробуйте:

taskkill /F /IM notepad.exe

Ответ 2

Поскольку TASKKILL может быть недоступен в некоторых домашних/основных версиях окон, здесь есть несколько альтернатив:

TSKILL processName

или

TSKILL PID

Имейте в виду, что processName не должен иметь суффикс .exe и ограничен 18 символами.

Другим вариантом является WMIC:

wmic Path win32_process Where "Caption Like 'MyProcess.exe'" Call Terminate

wmic предлагает еще большую гибкость, чем taskkill. С wmic Path win32_process get вы можете видеть доступные файлы, которые вы можете фильтровать.

Ответ 3

Когда вы запускаете процесс из командного файла, он запускается как отдельный процесс без каких-либо намеков на пакетный файл, который его запускал (так как это закончило бы работать в то же время, такие вещи, как идентификатор родительского процесса, не помогут вы).

Если вы знаете имя процесса и оно уникально среди всех запущенных процессов, вы можете использовать taskkill, как это предлагает @IVlad в комментарии.

Если это не уникально, вы можете посмотреть на задания. Они завершают все порожденные дочерние процессы, когда они завершаются.

Ответ 4

Почему вы не используете PowerShell?

Stop-Process -Name notepad

И если вы находитесь в пакетном файле:

powershell -Command "Stop-Process -Name notepad"
powershell -Command "Stop-Process -Id 4232"

Ответ 5

taskkill/F/IM notepad.exe, это лучший способ убить задачу из диспетчера задач.