2

ゲームを実行するために、exeを2回起動してから、rundll32.exeプロセスの1つを強制終了する必要があります。毎回手作業でこれを行いたくないので、次のようにバッチファイルに入れます。

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

rundll32.exeのインスタンスが2つ実行されており、両方が強制終了されています。そのうちの1つだけを終了する必要があります。rundll32.exeは起動するたびに新しいものを取得するため、PIDは役に立ちません。同じ名前のプロセスが他にもある場合、どうすれば1つのプロセスだけを強制終了できますか?

4

2 に答える 2

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の2番目のインスタンスを強制終了したい場合は、次のように変更できます。

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
于 2012-11-02T17:02:40.850 に答える
2

これは、どのインスタンスを強制終了してもかまわないことを前提としています。

@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動作することが確実な場合は削除します。

于 2012-11-02T17:02:47.940 に答える