我是批处理文件的新手。我有两个项目,我想使用批处理文件运行它们。projectA应该在端口8081上运行,而projectB应该在8082上运行。我尝试了以下两种方法,但是只有projectA在端口8081上启动。
@echo off SET CMB_HOME=C:\Development\CMB cd %CMB_HOME%\projectA\ call mvn tomcat:run -Dmaven.tomcat.port=8081 cd %CMB_HOME%\projectB\ call mvn tomcat:run -Dmaven.tomcat.port=8082
似乎没有阅读以下部分。
cd %CMB_HOME%\projectB\ call mvn tomcat:run -Dmaven.tomcat.port=8082
我也尝试创建2个批处理文件:master.bat和slave.bat。
master.bat包含以下内容,并正在调用slave.bat:
@echo off SET CMB_HOME=C:\Development\CMB cd %CMB_HOME%\projectA\ call mvn tomcat:run -Dmaven.tomcat.port=8081 SET SCRIPT_HOME=C:\Development\scripts\CMB cd %SCRIPT_HOME% call slave.bat
slave.bat包含以下内容:
@echo off SET CMB_HOME=C:\Development\CMB cd %CMB_HOME%\projectB\ call mvn tomcat:run -Dmaven.tomcat.port=8082
请帮忙。
编辑:更新了传递的参数。
@echo off SET CMB_HOME=C:\Development\CMB pushd %CMB_HOME%\projectA\ start "Port 8081" cmd /c "mvn tomcat:run -Dmaven.tomcat.port=8081" popd pushd %CMB_HOME%\projectB\ start "Port 8082" cmd /c "mvn tomcat:run -Dmaven.tomcat.port=8082" popd
因为我不知道mvn如何期望其参数,所以您可能会在start命令中使用引号
start "Port 8081" cmd/c ^""mvn "tomcat:run -Dmaven.tomcat.port=8081" ^" ... start "Port 8082" cmd/c ^""mvn "tomcat:run -Dmaven.tomcat.port=8082" ^"
或尝试解决方法…
@echo off if "%~1" neq "" goto run start "Port 8081" cmd /c ^""%~f0" projectA 8081 ^" start "Port 8082" cmd /c ^""%~f0" projectB 8082 ^" goto :eof :run set "PORT=%~2" set "CMB_HOME=C:\Development\CMB\%~1\" pushd %CMB_HOME% call mvn tomcat:run -Dmaven.tomcat.port=%PORT% popd goto :eof