2008-10-13 53 views
127

我在嘗試編寫Windows cmd腳本來執行系列中的多個任務。 但是,它始終在腳本中的第一個命令後停止。從Windows cmd腳本執行多個命令

它停止後的命令是一個maven版本(不知道這是否相關)。

請問我該如何讓它繼續進行並依次運行每個任務?

安裝任何軟件或配置註冊表等都完全沒有問題 - 它必須工作在香草Windows XP安裝恐怕。

理想情況下,如果任何命令失敗,我希望腳本中止,但這是一個「很好有」,不是必需的。

謝謝。

回答

132

當你調用另一個.bat文件,我想你需要「調用」在通話的面前:

call otherCommand.bat 
+1

嗨,在原來的腳本中,我沒有調用其他.cmd文件,但我已經將它分成單獨的文件,所以我可以依次運行。因此,在每個命令前面打電話似乎已經完成了這個技巧,謝謝! – 2008-10-13 15:48:44

+0

調用git diff命令時,這也適用於我 – Bronumski 2011-12-01 11:02:14

+5

事實上,在Windows上,`mvn`本身就是一個.bat文件,因此您需要使用`call`作爲`call mvn install` ;通常你不需要創建一個額外的cmd文件。 – jfpoilpret 2012-09-13 08:17:17

1

我不知道直接回答你的問題,但如果你做了很多這些腳本中,可能值得學習像perl這樣更強大的語言。 Windows的免費實現(例如,activestate,cygwin)。我發現這對我自己的任務來說是值得的。

編輯:

至於建議的@Ferruccio,如果您不能安裝額外的軟件,可以考慮VBScript和/或JavaScript。它們內置於Windows腳本主機中。

25

不知道爲什麼第一個命令停止。 如果你可以把它平行的,你可以,如果你在Windows上運行,你可以使用下面的命令嘗試像

start cmd.exe /C 1.bat  
start cmd.exe /C 2.bat 
1

驅動器:

cd "Script location" 
schtasks /run /tn "TASK1" 
schtasks /run /tn "TASK2" 
schtasks /run /tn "TASK3" 
exit 
19

我剛纔一直在做完全一樣的(英語)創建一個批處理腳本運行Maven的測試腳本的任務。問題是用mvn clean install ...調用maven scrips本身就是一個腳本,因此需要使用mvn clean install來完成。

代碼,將工作

rem run a maven clean install 
cd C:\rbe-ui-test-suite 
call mvn clean install 
rem now run through all the test scripts 
call mvn clean install -Prun-integration-tests -Dpattern=tc-login 
call mvn clean install -Prun-integration-tests -Dpattern=login-1 

注意而使用的調用。這將允許在批處理文件中使用連續的maven腳本。

0

請注意,您不需要批處理文件中的分號。而你需要使用call的原因是mvn本身就是一個批處理文件,批處理文件需要通過調用互相調用,否則控制權不會返回給調用者。

2

使用雙&符號將運行第二個命令,只有當第一個成功:

cd Desktop/project-directory && atom . 

凡爲,只用一個符號都將嘗試運行這兩個命令,即使第一個失敗:

cd Desktop/project-directory & atom .