Windows에서 박쥐 프로세스를 중지하는 방법?


11

약 10 분 동안 Windows에서 BAT 파일이 백그라운드에서 실행 중입니다. 이제 실행되는 동안 중지하고 싶지만 작업 관리자의 프로세스 목록에서 이름을 찾을 수 없습니다. 어떻게 접근 할 수 있습니까? 감사!

업데이트 1

backgroud에서 실행중인 BAT 프로세스를 중지하는 것이 어려워 보입니다. 그리고 BAT 파일과 관련된 모든 프로세스를 이름으로 죽이려고 노력하고 있습니다. 핑, tracert, netstat 등 더 나은 솔루션이 있으면 알려주십시오. 감사합니다.

업데이트 2

BAT 프로세스 트리

대체 텍스트


1
박쥐 파일을 백그라운드에서 어떻게 실행 했습니까? ctrl-c를 할 수 없다고 말합니다. 그래도 작동하지 않으면 break = on을 시도하지만 "배경에 있기 때문에"ctrl-c를 수행 할 수 없다고 말합니다. 어쩌면 이미 실행되어 완료되었으므로 생성 된 것을 죽여야합니다.
barlop

2
@ barlop, ShellExecute(NULL,"open","some.bat",NULL,NULL,SW_HIDE);VC ++ 에서 backgroud로 추출 할 수 있습니다 .
SpawnST

답변:


11

프로세스는 일반적으로 패션과 같은 트리에서 시작됩니다 .Microsoft / Sysinternals Process Explorer 를 시작하고 Show Process Tree(1) 옵션 을 클릭하여 시작한 다음 프로세스를 찾아 마우스 오른쪽 버튼을 클릭하고 Kill Process Tree(2) 원본 파일을 모두 종료해야합니다. 그것이 시작한 모든 것.

대체 텍스트


프로세스 트리를 죽이는 것은 약간 무겁습니다. 부모 프로세스를 종료하기에 충분할 수 있습니다 (bat 명령).
wag2639

1
@ wag2639, 질문을 읽은 후, 그는 BAT를 끝내고 프로세스를 생성하고 싶다고 생각 했습니까? 처리하는 데 너무 오래 걸린다고 말하면 프로세스가 시작되고 응답을 쓸 때까지 아무 일도 일어나지 않는다는 것을 이해합니다 ... 트리가 끝나지 않으면 실행중인 프로세스가 많이있을 것입니다. 아무것도하지 않고.
윌리엄 힐섬

나는이 방법을 시도하고 내 대답에 그림을 추가했습니다. 감사합니다. 이제 BAT 파일과 그 자식으로 시작되는 프로세스를 종료 할 수있는 명령을 찾습니다 taskkill /F /T /IM cmd.exe. 유일한 문제는 모든 BAT 파일이 cmd.exe다른 PID 로 프로세스를 시작한다는 것입니다 어느 것이 내 목표인지 알아 내야합니다.
SpawnST

@SpawnST, BAT 파일을 시작하는 프로세스는 무엇입니까? 사본이 여러 개인 경우 실행중인 항목을 종료해야합니다.
윌리엄 힐섬

@Wil, 그것은 MFC / Dialog 프로세스에 의해 시작됩니다. 대화 상자는 초기화 될 때만 윈도우 쉘로 BAT 파일을 실행합니다. 이제 대화 상자가 종료되면 BAT 프로세스가 완전히 종료되도록 노력하고 있습니다.
SpawnST

5

배치 파일을 수정하여 잠금 파일을 사용하여 파일의 존재에 대한 명령 사이에 점검을 삽입하여 조작을 계속할 수 있습니다. 배치 파일의 실행을 중지하려면 잠금 파일을 삭제하십시오.

데모 배치 파일은 다음과 같습니다.

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

현재 실행중인 프로세스를 심하게 종료하려면 배치 파일 에서 실행 가능한 모든 작업에 대해 taskkill 명령 이 포함 된 'kill'배치 파일을 만들 수 있습니다 .

del "c:\temp\lockfile"
taskkill /im mytask1.exe
taskkill /im mytask2.exe

tracert예를 들어 명령이 오랫동안 실행될 때 앱에 문제가 발생할 수 있다고 생각합니다 .
SpawnST

그래, 그게 내가 지금하고있는 일, 정말로 폭력적인 사람 :-). 아마도이 솔루션에는 잠금 파일이 필요하지 않을 것입니다.
SpawnST

배치 파일이 현재 작업이 종료 될 때 다음 작업을 실행하지 않도록해야합니다. 그렇지 않으면 taskkill이 이미 완료된 후 task1이 종료되고 task2가 시작될 수 있으므로 kill 배치는 단순히 task2에서 누락됩니다.
harrymc

1

BAT는 일반적으로 CMD.exe의 인스턴스를 시작합니다. 스크립트의 기능에 따라 다른 프로세스도 시작됩니다.


따라서 다른 프로세스를 계속 시작하지 못하게 할 수있는 방법이 있습니까?
SpawnST

1
@SpawnST : CMD 창이 표시되면 Ctrl + C 만 입력 할 수 없습니까?
paradroid

@ jason404, 질문에서 언급했듯이 백그라운드에서 실행 중입니다.
SpawnST

1

적어도 BAT가 CMD 창에서 실행중인 경우 도움이 될 수 있는 을 작성했습니다 . 실행중인 응용 프로그램 창을보고 응용 프로그램의 PID를 얻을 수 있습니다. 그런 다음 내 응용 프로그램으로 응용 프로그램을 종료하고 생성 된 모든 프로세스를 볼 수도 있습니다. 정말 간단한 프로그램이지만 이런 종류의 일에는 효과적입니다. 또한 BAT 파일이 실행 중인지 HD를 통해 BAT 파일이 실행중인 위치를 정확하게 추적 할 수 있습니다.


VC ++ / MFC 로이 작업을 수행하고 있으며 응답을 얻으려면 Windows 명령이 필요하다고 생각합니다.
SpawnST

1

배치 파일은 어떻게 호출됩니까?
작업 스케줄러에서 가져온 것이라면 거기서도 중지 할 수 있습니다. 서비스에서 온 서비스 인 경우 서비스를 중지 할 수 있습니다.



0

명령 프롬프트에서 열었 으면 Ctrl+ 를 누를 수 있습니다 C. 몇 초 정도 기다리면 종료됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.