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



我有 2 个批处理文件,我目前单独运行,但我想将它们合并到 1 个我可以触发的文件中。

批处理文件 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 中运行代码?

可以通过以下方式创建另一个cmd实例来挽救问题的解决方案start cmd /k

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

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

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

由于启动语法,您必须使用&来链接多个命令。请注意,单个&在一行上分隔命令。仅当前一个命令的错误级别为 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
@echo off
setlocal
if "%~1" == "/label2" goto :label2
goto :label1
:label2
pushd "C:location of backenddatabase 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比较。

最新更新