私はちょうど同じ問題に対処していたところで、バッチファイルをランダムに変更したように見えたのですが、最終的に解決しました。
私は SysInternals Pskill ユーティリティと sleep ユーティリティを使用しています。
これは実際に終了した後に閉じるバッチファイルです。
@echo off
start /min C:\Progra~1\PsTools\pskill.exe explorer.exe
start /min C:\Progra~1\PsTools\pskill.exe Powermenu.exe
start /min C:\Progra~1\PsTools\pskill.exe PWGen.exe
start /min C:\Progra~1\PsTools\pskill.exe redshiftgui.exe
start /min C:\Progra~1\PsTools\pskill.exe clipx.exe
sleep 2
start explorer.exe
sleep 3
start C:\Progra~1\ClipX\clipx.exe
sleep 1
start C:\Progra~1\Powermenu\PowerMenu.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
start C:\Progra~1\RedshiftGUI\redshiftgui.exe && exit
最後の数行をこのように変更した場合、隅にある「X」をクリックするまでcmdウィンドウは開いたままになります:
start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe && exit
pskillを起動して自滅させようとしても、cmd.exeプロセスはタスクマネージャから消え、pskillはcmd.exeプロセスの内部から報告します。 exeの中でcmd.exeプロセスが強制終了したことを報告しても、cmd.exe
ウィンドウは隅にある「X」をクリックするまで表示されたままでした:
start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
C:\Progra~1\PsTools\pskill.exe cmd.exe
全ての行に&& exit
を追加した後、それに反応してバッチ処理を中断するものとそうでないものがあることに気づきました。
そこで、元々持っていた方法ではなく、反応したもののうちの1つを最後に置いてみました。
さっきも言ったように、理由はわからないけど、これが終わってよかった。