Как остановить bat процесс в Windows?

У меня есть Bat-файл, работающий в фоне в Windows, который длится приблизительно десять минут. Теперь я хочу остановить его, в то время как это работает, но я не могу найти его имя в списке процессов в диспетчере задач. Таким образом, как я могу приблизиться к этому?Спасибо!

UPDATE1

Кажется трудным остановить рабочий процесс BAT в backgroud. И я решаю попытаться уничтожить каждый процесс, включенный файлом the Bat по имени, который может быть сверхуничтожен. Это приемлемо для меня, так как большинство процессов в моем Bat-файле часто не используется, такие как ping, tracert, netstat и т.д. Если у Вас есть какое-либо лучшее решение, сообщенное мне. Спасибо.

UPDATE2

Дерево процесса BAT

alt text

9
задан 17.11.2010, 11:09

6 ответов

Процессы обычно запускаются в дереве как вид, я советовал бы запускать Microsoft / Проводник Процесса Sysinternals, Запускаться путем нажатия Show Process Tree (1) опция, затем найдите свой процесс и щелкните правой кнопкой и выберите Kill Process Tree (2) Это должно уничтожить и исходный файл и все, что он запустил.

alt text

10
ответ дан 07.12.2019, 13:12

BAT обычно просто запускает экземпляр CMD.exe. В зависимости от того, что делает Ваш сценарий, он также запустит другие процессы.

1
ответ дан 07.12.2019, 13:12

Я записал приложение, которое могло бы помочь Вам, по крайней мере, если the Bat работает в окне CMD. Можно просмотреть окна приложения, которые выполняют и получают PID приложения, можно затем уничтожить его с моим приложением, можно также видеть все процессы, что это породило и уничтожает их также. Это - реальная простая программа, но эффективный для этого вида вещи. Можно также использовать его для разыскивания точно, откуда на the Bat HD файл работает, в случае, если Вы уже не знали это.

1
ответ дан 07.12.2019, 13:12

Как пакетный файл вызывается?
Если это из Планировщика задач, то можно остановить его оттуда также. Если это от сервиса, то можно остановить сервис.

1
ответ дан 07.12.2019, 13:12

Можно изменить пакетный файл так, чтобы он использовал файл блокировки, чтобы продолжить работать путем вставки проверок между командами для существования файла. Чтобы мешать пакетному файлу выполниться, просто удалите файл блокировки.

Вот демонстрационный пакетный файл:

echo xx > "c:\temp\lockfile"
pause
if not exist "c:\temp\lockfile" goto  exit
pause
del "c:\temp\lockfile"
:exit

Для сильного уничтожения процессов, которые могли бы выполняться в данный момент можно создать пакетный файл 'уничтожения', который будет содержать команды taskkill для всех задач, возможно запущенных от пакетного файла:

del "c:\temp\lockfile"
taskkill /im mytask1.exe
taskkill /im mytask2.exe
5
ответ дан 07.12.2019, 13:12

Найденный этим потоком форума:

http://www.gamedev.net/community/forums/topic.asp?topic_id=261694

Это предлагает использовать ShellExecuteEx (или CreateProcess), таким образом, можно получить дескриптор процесса, который затем может использоваться для уничтожения процесса.

1
ответ дан 07.12.2019, 13:12

Теги

Похожие вопросы