Mam plik BAT działający w tle w systemie Windows, który trwa około dziesięciu minut. Teraz chcę go zatrzymać, gdy jest uruchomiony, ale nie mogę znaleźć jego nazwy na liście procesów w menedżerze zadań. Jak mogę do tego podejść? Dzięki!
AKTUALIZACJA 1
Wydaje się, że trudno jest zatrzymać działający proces BAT w tle. I postanawiam spróbować zabić każdy proces związany z plikiem BAT według nazwy, który może być przeciążony. Jest to dla mnie dopuszczalne, ponieważ większość procesów w moim pliku BAT nie jest często używana, takich jak ping, tracert, netstat itp. Jeśli masz jakieś lepsze rozwiązanie, daj mi znać.
AKTUALIZACJA 2
Drzewo procesów BAT
ShellExecute(NULL,"open","some.bat",NULL,NULL,SW_HIDE);
VC ++.Odpowiedzi:
Procesy zwykle uruchamiane są w sposób podobny do drzewa, radziłbym uruchomić Microsoft / Sysinternals Process Explorer , zacznij od kliknięcia opcji
Show Process Tree
(1), a następnie znajdź swój proces i kliknij prawym przyciskiem myszy i wybierzKill Process Tree
(2) To powinno zabić zarówno oryginalny plik, jak i wszystko, co uruchomił.źródło
taskkill /F /T /IM cmd.exe
. Jedynym problemem jest to, że każdy plik BAT rozpoczniecmd.exe
proces z innym PID Muszę dowiedzieć się, który jest moim celem.Możesz zmodyfikować plik wsadowy, aby używał pliku blokującego do kontynuowania działania, wstawiając między poleceniami sprawdzanie istnienia pliku. Aby zatrzymać wykonywanie pliku wsadowego, wystarczy usunąć plik blokady.
Oto plik wsadowy wersji demo:
Aby brutalnie zabić procesy, które mogą być wykonującego w tej chwili można utworzyć „kill” plik wsadowy, który będzie zawierał taskkill polecenia dla wszystkich zadań rozpoczętych ewentualnie z pliku wsadowego:
źródło
tracert
na przykład gdy polecenie jest wykonywane przez długi czas .BAT zwykle uruchamia po prostu instancję CMD.exe. W zależności od tego, co robi skrypt, uruchomi także inne procesy.
źródło
Napisałem aplikację, która może ci pomóc, przynajmniej jeśli BAT działa w oknie CMD. Możesz przeglądać uruchomione okna aplikacji i uzyskać PID aplikacji, możesz następnie zabić ją za pomocą mojej aplikacji, możesz także zobaczyć wszystkie procesy, które ona zaszczepiła i je zabić. To naprawdę prosty program, ale skuteczny do tego rodzaju rzeczy. Możesz go również użyć do śledzenia dokładnie, z którego miejsca na dysku HD działa plik BAT, na wypadek, gdybyś jeszcze tego nie wiedział.
źródło
Jak wywoływany jest plik wsadowy?
Jeśli pochodzi z Harmonogramu zadań, możesz go także zatrzymać. Jeśli pochodzi z usługi, możesz ją zatrzymać.
źródło
Znaleziono ten wątek na forum:
http://www.gamedev.net/community/forums/topic.asp?topic_id=261694
Sugeruje użycie ShellExecuteEx (lub CreateProcess), aby uzyskać uchwyt procesu, który można następnie wykorzystać do zabicia procesu.
źródło
Jeśli jest otwarty w wierszu polecenia, możesz nacisnąć Ctrl+ C. Poczekaj kilka sekund, a zostanie zakończone.
źródło