2016-08-12 119 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

相关问题