2017-01-30 166 views
0

我想運行一個bat文件,其中我有兩個命令順序執行。通過用戶輸入窗口執行多個命令終端

@echo off 
::taking version no. as input 
set /p productVersion="Enter new product version: " 
::executing first command 
mvn versions:set -DnewVersion=%productVersion% && set /p commitChanges="new version is set for all modules %productVersion% Do you want commit your changes for all pom files :(y/n)" && call:commitChanges %commitChanges% 
EXIT /B 
::executing second command, after taking input y/n 
:commitChanges 
If %~1=="y" goto yes 
If %~1=="n" goto no 
If %~1=="Y" goto yes 
If %~1=="N" goto no 
EXIT /B 
:no 
mvn versions:revert 
EXIT /B 
:yes 
mvn versions:commit 
EXIT /B 

第一個命令執行成功,第二個命令行輸入,但終端關閉,第二個命令不執行。

回答

2

你可能會更好使用else子句:

@Echo Off 
:AskFirst 
Set/P "productVersion=Enter new product version: " 
If "%productVersion%"=="" GoTo AskFirst 
Call mvn versions:set -DnewVersion=%productVersion% 
Echo=new version is set for all modules %productVersion% 
:AskSecond 
Set/P "commitChanges=Do you want commit your changes for all pom files :(y/n) " 
If /I "%commitChanges%"=="y" (Call mvn versions:commit) Else (
    If /I "%commitChanges%"=="n" (Call mvn versions:revert) Else (
     GoTo AskSecond)) 
Echo=changes have been committed 
Pause 
Exit/B 
0

EXIT /B指令退出當前例程,因此例程將在mvn versions:set -Dne...結束後退出。

+0

即使我刪除所有EXIT/B,它仍然沒有工作 –

+0

什麼是'mvn'?如果'mvn'是一個批處理文件('mvn.bat'),那麼你需要'調用mvn'以便在完成'mvn'後批量返回到程序。 – Magoo

+0

我在mvn命令前刪除了EXIT/B和應用的呼叫。執行第一個命令並提示第二個輸入語句,但輸入密鑰後,顯示錯誤:此時goto是意外的。 –