簡體   English   中英

是否可以從Jenkins運行兩個批處理文件?

[英]Is it possible to run two batch files from Jenkins?

我有以下情況。 在詹金斯,我有一個正在不同環境運行的構建。 這就是為什么我使用帶有兩個選項PROD/TEST參數進行構建的原因。 該構建正在調用帶有參數PRODTEST shell腳本。

這是jenkins正在調用的腳本A示例:

if %1%==TEST(
start F:\test.bat
 )

腳本A本身正在調用另一個腳本B

這是腳本B示例:

copy test.xt copyFolder\

問題在於,詹金斯只調用第一個腳本A ,而第二個腳本B不運行。

為什么會這樣?

您將需要call該批處理文件,而不是start它,因為它會創建一個新的cmd.exe實例,因此它可以異步運行被調用的批處理文件(如jeb 在此處所述 ):

if "%~1" == "TEST" (
    call F:\test.bat
)

在這里,我要注意一些事項:

  • %1%將被解釋為批處理文件第一個參數 (如果有)和一個額外的百分號( % 您可能希望在這里使用第一個參數,因此我已將%1%替換為%1 如果這不是您想要的,則將其替換為變量名,但請記住,它不應以數字開頭!
  • %1%~1替換並引用是因為:
    • %~1指沒有任何引號的第一個參數。
    • if語句中引用值始終是最佳做法,但如果使用引號,則比較將失敗。
  • ==之間添加了一個空格,以使代碼更清晰。

對於單行代碼,請參閱aschipfl的注釋 ,它是:

if /I "%~1"=="TEST" (call "F:\test.bat")

看到call /? if /? 有關這些命令如何工作的更多信息,請參見cmd。

暫無
暫無

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

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