Command-Line-Interface
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 不是一個多任務作業系統。)
好的,好的——這是我剛剛完成的一個hack。即使提出這個建議,我也覺得有點骯髒。
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”視窗。
我覺得噁心。>微笑<