web-dev-qa-db-ja.com

cmd.exe:バックグラウンドプロセスの開始、いくつかの実行、バックグラウンドプロセスの停止の方法

次のバッチスクリプトを実行したいと思います。

  • バックグラウンドプロセスを開始します(重要な場合は、Selenium RCサーバー)。
  • バックグラウンドプロセスがポートのリッスンを開始するまで待機します(または一定時間待機します)。
  • いくつかの命令を実行します。
  • バックグラウンドプロセスを停止します。

私はこれを書いた:

start Java -jar "path\Selenium-server.jar" 
ping -n 5 127.0.0.1 >NUL
"path\Gallio.Echo.exe" "path\MyAssembly.dll"
REM now, how do I stop the background process?
3
Seiti

"DOS"と言いますが、Windows CMDシェルを意味していると思います。 (結局のところ、MS-DOSはマルチタスクオペレーティングシステムではありません。)

わかりました、わかりました-これが私が作り上げたハックです。これを提案してもちょっと汚い気がします。

SET TASK=%RANDOM%-Selenium-SERVER-%RANDOM%
start "%TASK%" Java -jar "path\Selenium-server.jar"
ping -n 5 127.0.0.1 >NUL"
path\Gallio.Echo.exe" "path\MyAssembly.dll"
taskkill /FI "WINDOWTITLE eq %TASK%"

「Java」コマンドはウィンドウタイトルをあまり使用しないと仮定すると、「START」コマンドはウィンドウタイトルを「乱数」-Selenium-SERVER-「乱数」に設定し、TASKKILLはウィンドウを強制終了します。そのタイトル。

うわぁ……それで汚い気分になります。

「Java」がウィンドウのタイトルを台無しにする場合は、次のこともできます。

SET TASK=%RANDOM%-Selenium-SERVER-%RANDOM%
start "%TASK%" cmd /k start Java -jar "path\Selenium-server.jar"
ping -n 5 127.0.0.1 >NUL"
path\Gallio.Echo.exe" "path\MyAssembly.dll"
taskkill /T /FI "WINDOWTITLE eq %TASK%"

それ本当に私は汚く感じます。これにより、ランダムなタイトルのCMDウィンドウが作成され、別のウィンドウで「Java」が起動します。 TASKKILLの「/ T」は、「FOO」ウィンドウの子プロセス、つまり「Java」ウィンドウを強制終了します。

気分が悪いです。 >笑顔<

8
Evan Anderson