У меня есть файл BAT, работающий в фоновом режиме в Windows, который длится около десяти минут. Теперь я хочу остановить его во время работы, но не могу найти его имя в списке процессов в диспетчере задач. Так как я могу подойти к этому? Спасибо!
Update1
Кажется трудным остановить запущенный процесс BAT в backgroud. И я решил попробовать уничтожить каждый процесс, связанный с файлом BAT по имени, что может быть перебито. Это приемлемо для меня, так как большинство процессов в моем файле BAT используются не часто, такие как ping, tracert, netstat и т. д. Если у вас есть лучшее решение, пожалуйста, дайте мне знать. Спасибо.
UPDATE2
Дерево процессов BAT
ShellExecute(NULL,"open","some.bat",NULL,NULL,SW_HIDE);
VC ++.Ответы:
Процессы обычно запускаются в виде дерева, как в моде, я бы посоветовал запустить Microsoft / Sysinternals Process Explorer. Начните с нажатия на
Show Process Tree
опцию (1), затем найдите свой процесс, щелкните правой кнопкой мыши и выберитеKill Process Tree
(2) Это должно уничтожить как исходный файл, так и все, что он запустил.источник
taskkill /F /T /IM cmd.exe
дочерними элементами. Единственная проблема заключается в том, что каждый файл BAT запускаетcmd.exe
процесс с различным PID. Мне нужно выяснить, какая из них моя цель.Вы можете изменить командный файл так, чтобы он продолжал работать, используя блокировочный файл, вставляя проверки между командами на наличие файла. Чтобы остановить выполнение командного файла, просто удалите файл блокировки.
Вот демонстрационный пакетный файл:
Для насильственного уничтожения процессов, которые могут выполняться в данный момент, вы можете создать пакетный файл kill, который будет содержать команды taskkill для всех задач, которые могут быть запущены из пакетного файла:
источник
tracert
.BAT обычно просто запускает экземпляр CMD.exe. В зависимости от того, что делает ваш скрипт, он также запускает другие процессы.
источник
Я написал приложение, которое может помочь вам, по крайней мере, если BAT работает в окне CMD. Вы можете просмотреть запущенные окна приложения и получить PID приложения, затем убить его с помощью моего приложения, вы также можете увидеть все процессы, которые оно породило, и уничтожить их тоже. Это действительно простая программа, но эффективная для такого рода вещей. Вы также можете использовать его, чтобы отследить, где именно на вашем HD запускается BAT-файл, если вы еще этого не знали.
источник
Как вызывается командный файл?
Если это из планировщика заданий, то вы также можете остановить его оттуда. Если это из службы, то вы можете остановить службу.
источник
Нашел эту тему на форуме:
http://www.gamedev.net/community/forums/topic.asp?topic_id=261694
Он предлагает использовать ShellExecuteEx (или CreateProcess), чтобы вы могли получить дескриптор процесса, который затем можно использовать для уничтожения процесса.
источник
Если он открыт в командной строке, вы можете нажать Ctrl+ C. Подождите несколько секунд, и это будет прекращено.
источник