将2个批处理文件合并为1,但使它们在2个命令窗口中运行

时间:2018-07-05 15:55:51

标签: batch-file

我有2个批处理文件,这些文件目前分别运行,但是我想将它们合并为一个可以触发的文件。

批处理文件1

echo on
pushd C:\(location of front end code)
call npm install
call gulp build 
Pause

批处理文件2

echo on
pushd C:\(location of backend/database code)
call activator -jvm-debug 9999 -Dconfig.file='<application.conf file location>
pause

我想做的是将它们放在一个批处理文件中,该批处理文件在批处理文件1中运行代码,然后在保留第一个打开的同时打开第二个命令窗口并在批处理文件2中运行代码?

2 个答案:

答案 0 :(得分:1)

可以通过start cmd /k

创建另一个cmd实例来解决您的问题。

start命令将允许您创建一个新窗口并执行代码。语法:START "title" [/D path] [options] "command" [parameters]

对于[options],您可以使用几个门:

  • / K -将运行新窗口并在执行后保持打开状态。
  • / C -将运行新窗口并在执行后将其关闭。

由于 start 语法的原因,您将不得不使用&来链接多个命令。请注意,单个&分隔一行中的命令。 &&仅在前一个命令的错误级别为0时才会执行下一个命令。

@ECHO OFF
@SETLOCAL
@TITLE Active Window01
@GOTO :WIN1

:WIN1
::Code for 1st batch
pushd C:\(location of front end code)
call npm install
call gulp build 

echo Code finished, opening 2nd task window.
goto :WIN2

:WIN2
::Open new task window after 1st task.
start "Active Window02" cmd /C "@ECHO OFF & pushd C:\(location of backend/database code) & call activator -jvm-debug 9999 -Dconfig.file='<application.conf file location> & Echo Code finished, now pausing. & pause."

::To pause 1st batch
pause

答案 1 :(得分:1)

@echo off
setlocal

if "%~1" == "/label2" goto :label2
goto :label1

:label2
pushd "C:\location of backend\database code"
call activator -jvm-debug 9999 -Dconfig.file="application.conf file location"
pause
exit /b 0

:label1
pushd "C:\location of front end code"
call npm install
call gulp build
start "%ComSpec%" /i cmd /c "%~f0" /label2
pause
exit /b 0

运行脚本将goto :label1作为第一个参数 不是/label2

它将最终到达start命令并运行 参数为/label2的相同脚本。第一个论点 start是窗口标题,它被设置为来自 %ComSpec%

第二个脚本实例将goto :label2作为第一个参数 匹配if比较。