簡體   English   中英

如何從 .bat 文件運行多個服務

[英]How to run multiple services from .bat file

我想從 bat 文件運行 selenium 服務器。 表示啟動集線器和集線器下的兩個節點。 在 Ubuntu 我有這個腳本來做到這一點:

  java -jar $jarFilePath -role hub & 
  java -jar $jarFilePath -role node -hub http://173.249.58.30:4444/grid/register/ & 
  java -jar $jarFilePath -role node -hub http://173.249.58.30:4444/grid/register/ & 
  exit 0

有必要用 & 鏈接它,因為第一個命令仍在運行並且不運行下一個命令。 但是在 Windows 上,由於某些原因,這不起作用。 我為 Win 找到了類似的東西,但仍然沒有成功。 它打開三個終端,但節點無法注冊到集線器:

start cmd.exe /k "cd c:\Program Files\Selenium\Server & java -jar selenium-server-standalone-3.141.59.jar -role hub"

start cmd.exe /k "cd c:\Program Files\Selenium\Server & java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.137.1:4444/grid/register/" 
start cmd.exe /k "cd c:\Program Files\Selenium\Server & java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.137.1:4444/grid/register/" 

在此處輸入圖像描述

謝謝你的幫助。

您的命令失敗的原因是必須引用帶有空格的路徑(空格是標記分隔符)。

但是以下仍然會失敗,因為引號不能嵌套,所以&沒有被引用,並且初始批處理解析器將該行視為兩個連接的命令而不是單個start命令。

例如,看第一行,這是行不通的

start cmd.exe /k "cd "c:\Program Files\Selenium\Server" & java -jar selenium-server-standalone-3.141.59.jar -role hub"

要解決上述問題,很多人會逃避&

start cmd.exe /k "cd "c:\Program Files\Selenium\Server" ^& java -jar selenium-server-standalone-3.141.59.jar -role hub"

但我更喜歡轉義最外面的引號,這樣我就可以編寫命令,就像我自己在命令提示符中鍵入它們一樣

start cmd.exe /k "cd ^"c:\Program Files\Selenium\Server" & java -jar selenium-server-standalone-3.141.59.jar -role hub^"

請注意,默認情況下cd不會更改您的活動驅動器。 所以說你的活動驅動器是D: ,那么上面的仍然行不通。 您必須使用cd /d "c:\Program Files\Selenium\Server"pushd "c:\Program Files\Selenium\Server"

但是在您的start命令之前cd /dpushd可能更簡單,因此您只需執行一次。 START ed 進程繼承父進程的環境。

服務終止后,子進程不需要保持打開狀態,因此最好使用cmd /c而不是cmd /k

您的完整腳本可能是

@echo off
pushd "c:\Program Files\Selenium\Server"
start cmd.exe /c "java -jar selenium-server-standalone-3.141.59.jar -role hub"
start cmd.exe /c "java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.137.1:4444/grid/register/" 
start cmd.exe /c "java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.137.1:4444/grid/register/" 
popd

但我不確定您是否真的需要在java內顯式運行cmd.exe 您也許可以簡單地使用以下內容

@echo off
pushd "c:\Program Files\Selenium\Server"
start java -jar selenium-server-standalone-3.141.59.jar -role hub
start java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.137.1:4444/grid/register/
start java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.137.1:4444/grid/register/
popd

最后,您可能不需要為每個進程使用單獨的 window,在這種情況下,您可以將/B選項添加到START命令。 start后立即放置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM