批量脚本在`gulp`进程完成后停止执行,不继续执行脚本的其余部分

Bla*_*ugh 7 build batch-file maven node.js gulp

我正在尝试编写一个简单的批处理文件来构建gulp项目和maven项目.

当前文件如下:

cd C:\my\file\path
cmd /k gulp maven-deploy-local
cd C:\my\file\path\two\project-pom-parent
cmd /k mvn clean install -Dmaven.test.skip=true
Run Code Online (Sandbox Code Playgroud)

每当我运行这个脚本时,命令行在第2行之后和第3行之前停止.我最后cmd用闪烁的光标查看这一行:

C:\我的\文件\路径>

如果我运行没有cmd /k(如下所示)的文件,则提示只是在第2行之后和第3行之前关闭.

cd C:\my\file\path
gulp maven-deploy-local
cd C:\my\file\path\two\project-pom-parent
mvn clean install -Dmaven.test.skip=true
Run Code Online (Sandbox Code Playgroud)

如何修改批处理脚本以便它继续并执行第3行和第4行的命令,然后使用以下行和闪烁的光标保持打开状态?

C:\我的\文件\路径\ 2 \项目-POM父>

我在Windows 7 64位上运行

fox*_*ive 10

此任务具体到足以使用它:

cd /d "C:\my\file\path"
cmd /c gulp maven-deploy-local
cd /d "C:\my\file\path\two\project-pom-parent"
cmd /k mvn clean install -Dmaven.test.skip=true
Run Code Online (Sandbox Code Playgroud)

本质上,第一个cmd /k可以更改为,cmd /c因此它执行命令并继续执行最后一个命令,使提示保持打开状态.


Squ*_*man 6

@ECHO OFF
IF NOT "%1"=="1" CMD /K ""%~f0" 1"
CD /d C:\my\file\path
CALL gulp maven-deploy-local
CD /d C:\my\file\path\two\project-pom-parent
CALL mvn clean install -Dmaven.test.skip=true
Run Code Online (Sandbox Code Playgroud)

  • 需要 CALL 语句来防止批处理文件在执行每个程序后关闭。IF NOT 语句只是第二次执行原始批处理文件并使用 CMD /K 保持打开的技巧。所以理论上它正在执行你的批处理文件两次。第一次它只执行 IF NOT。第二次 IF NOT 为 FALSE,因为我向批处理文件传递了一个参数,因此它改为执行最后 4 行代码。 (2认同)