2012-11-02 3 views
2

게임을 실행하기 위해 exe를 두 번 시작한 다음 rundll32.exe 프로세스 중 하나를 종료해야합니다.taskkill로 하나의 프로세스 만 죽이십시오

start Gothic2.exe 
start Gothic2.exe 
taskkill /IM rundll32.exe /F 

이 rundll32.exe를 실행의 두 인스턴스가 둘 다 사망, 나는 단지 하나를 종료해야합니다 그래서 나는과 같이 배치 파일에 넣어 손으로 때마다이 작업을 수행 할 수 없습니다 그들의. rundll32.exe가 시작될 때마다 새로운 PID를 얻기 때문에 PID는 도움이되지 않습니다. 이름이 같은 경우 하나의 프로세스 만 죽일 수 있습니까?

답변

3

Gothic2.exe를 시작할 때 rundll32.exe가 돌아가며 시스템에서 실행중인 다른 프로세스가없는 것으로 가정하고 rundll32.exe의 첫 번째 인스턴스를 죽일 수도 있습니다. 사용이 :

start Gothic2.exe 
for /f "tokens=2" %%x in ('tasklist ^| findstr rundll32.exe') do set PIDTOKILL=%%x 
start Gothic2.exe 
taskkill /F /PID %PIDTOKILL% 

내가 대신의 Rundll32.exe의 두 번째 인스턴스를 죽이고 싶어, 당신은 다음과 같이 수정할 수도있을 것 같군요 :

start Gothic2.exe 
for /f "tokens=2" %%x in ('tasklist ^| findstr rundll32.exe') do set PIDTOSAVE=%%x 
start Gothic2.exe 
for /f "tokens=2" %%x in ('tasklist ^| findstr rundll32.exe ^| findstr /v %PIDTOSAVE%') do taskkill /F /PID %%x 
+0

감사합니다. 이것은 배치 스크립트에 관해 더 많이 배워야한다는 것을 증명합니다. – Serban

1

이것은 당신이 상관 없어 가정하는 예를 죽이기 :

@echo off 
for /f "tokens=2 delims=," %%T in ('tasklist /nh /fi "imagename eq rundll32.exe" /fo csv') do (
    echo taskkill /F /pid %%~T 
    goto :eof 
) 

위의 버전은 taskkill 명령 (테스트 용으로 붙여 넣기를 복사 할 수 있음)에서 동작해야한다고 생각하면 echo을 제거하십시오.

관련 문제