0

こんにちは、私はバッチファイリングの初心者ですが、いじくり回したりコーディングしたりするのが大好きでした。2 つのプログラムを同時に閉じるバッチ ファイルを作成できますか? 例として、App_A (ゲームパッド エミュレーター) と App_B (オフライン RPG ゲーム) の通常ウィンドウを最小化して、2 つのプログラムを開くバッチファイルを作成しました。私が欲しいのは、App_B を閉じると App_A も自動的に閉じられるので、ウィンドウを復元して手動でエミュレータを閉じる必要はありません。

これは、このサイトでも見つけて動作させたコードです。

ECHO OFF
start /d "C:\Documents and Settings\Computer\My Documents\Imulator\PROFILE" SET1.imulatorprofile /m
ECHO IMULATOR STARTED
start /d "C:\Program Files\App_B" App_BLauncher.exe
ECHO APP_B STARTED
ECHO OPERATION COMPLETE

コメントや提案は大歓迎です! 前もって感謝します :)

4

2 に答える 2

0

Windows コマンドラインの使用はあまり得意ではありませんが、次のアプローチを試してみます。

  1. エミュレーターを起動します (APP_B の終了後に自動的に終了する必要があります)。
  2. APP_B を開始します (/wait オプションを使用 - これにより、バッチ処理が一時停止します)
  3. kill imulator (名前で PsKill を使用)

startPsKill、およびその他のコマンドの詳細については、このサイトを参照してください。

それが少し役立つことを願っています。

*ジョスト


...後で追加...

もう 1 つのオプションは、プロセス (App_B) が実行されているかどうかをバックグラウンドで定期的にチェックし、終了したら (App_A を停止して) 続行することです。このアプローチは、App_B が別のプロセス (App_Launched_By_B など) の単なるランチャーであり、直接戻ってくる場合に意味があります。

これは、次のような小さなループで実行できます。

start "App_A" /d "C:\Programs\App_A" App_A.exe
ECHO App_A STARTED
start "App_B" /d "C:\Programs\App_B" App_B.exe
ECHO App_B STARTED

ECHO GIVE App_B 30 SECONDS TO LAUNCH App_Launched_By_B 
SLEEP 30

:LOOP
PSLIST App_Launched_By_B >nul 2>&1
IF ERRORLEVEL 1 (
  GOTO CONTINUE
) ELSE (
  ECHO App_Launched_By_B IS STILL RUNNING - PAUSE ANOTHER 5 SECS
  SLEEP 5
  GOTO LOOP
)

:CONTINUE
PsKill App_A
ECHO App_A STOPPED

この例は、もともと別の回答からのもので、 aphoriaによって書かれました。この場合に少しだけ適応させました。

PsListおよびその他のコマンドに関する追加情報は、このサイトにあります。

また、あまり何もせずにCPUを消費するため、このアプローチはあまり好きではないことにも注意してください。しかし、それは私が見ることができるバッチファイルからの唯一の解決策です。

于 2013-07-16T08:04:27.087 に答える