2016-08-12 122 views
0

我試圖同時在11個不同的數據庫上運行Flyway遷移。我通過一個批處理文件這樣做......如何在可執行文件完成啓動後關閉命令提示符

@echo off 
setlocal 
set FLYWAY_EXE=C:\flyway-3.2.1\flyway 
for /d %%f in (%~dp0props_flyway\*) do (
    start "%%~nf" %FLYWAY_EXE% migrate -configFile=%~dp0props_flyway\%%~nf\flyway.conf 
) 
set FLYWAY_EXE= 
@echo on 

這種方式工作得很好,但它給我留下了11命令提示符窗口打開,我需要手動進入每個並鍵入「exit」。這些命令提示符窗口可能會在飛路遷移完成後自動關閉,以免我手動關閉它們。

我可以做到這一點,而無需使用開始。然後它會連續執行遷移,但我寧願並行執行以節省時間。

我試過從this question開始使用空字符串的方法,但是這對Windows 8.1沒有任何幫助,除了用空標題而不是我想要的名稱打開命令提示符。

我也試過......

cmd /c "start ^"%%~nf^" %FLYWAY_EXE% migrate -configFile=%~dp0props_flyway\%%~nf\flyway.conf" 

...無濟於事。

任何人都知道我可以如何開始每個遷移並在完成後自動關閉?

回答

3

你只想退出命令窗口? 你必須逃離&符號

僅僅通過套結對" && exit"結束更改命令

TRY:

start "%%~nf" %FLYWAY_EXE% migrate -configFile=%~dp0props_flyway\%%~nf\flyway.conf ^&^& exit

+0

精湛。非常感謝你。工作了一個治療:) – ManoDestra

+0

這將工作,除非EXE開始運行的進程或服務。關閉命令窗口可能會導致退出該進程或服務。 – sambul35

+0

是的,對我的情況來說不是問題,因爲可執行文件在完成之前不會返回。所以,對我來說是完美的:) – ManoDestra

相關問題