如何在可执行文件使用 start 完成后关闭命令提示符

How to close command prompt after executable finishes using start

我正在尝试 运行 同时在 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 个命令提示符 windows,我需要手动进入每个命令提示符并键入 "exit"。这些命令提示符 windows 是否可以在 flyway 迁移完成后自动关闭以避免我必须手动关闭它们?

不用start我也能搞定。然后它会连续执行迁移,但我宁愿并行执行它们以节省时间。

我已经尝试过在从 this question 开始后使用空字符串的方法,但这对我在 Windows 8.1 上没有任何作用,除了用空标题而不是打开命令提示符我想要的那个。

我也试过了...

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

...无济于事。

任何人都知道我如何启动这些迁移中的每一个并让它们在完成时自动关闭?

您只想退出命令window? 你必须转义符号

只需更改您的命令,将 " && exit" 添加到结束

尝试:

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