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? 

你说“DOS”,但我想象你是Windows CMD shell的意思。 (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%" 

真的让我感到肮脏。 这将创build一个随机标题的CMD窗口,然后在一个单独的窗口中启动“java”。 TASKKILL上的“/ T”将会终止“FOO”窗口的任何subprocess – 即“java”窗口。

我觉得恶心。 >微笑<