我有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中运行代码?
答案 0 :(得分:1)
可以通过start cmd /k
start
命令将允许您创建一个新窗口并执行代码。语法:START "title" [/D path] [options] "command" [parameters]
对于[options]
,您可以使用几个门:
由于 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
比较。