技术分享 其他 查看内容

Windows bat脚本中嵌套调用bat脚本和调用mvn命令导致cmd退出的问题

老高 | 发布于 2023-01-12 16:03| 浏览()| 评论() | 收藏() | 点赞() | 打印

遇到bat脚本中嵌套调用bat脚本和调用mvn命令时,如果不使用call xxx方式调用,会导致执行过程中cmd中途退出,后面的bat脚本内容不会被执行到。

解决方案:调用命令前面显示加“call”。

下面是我的一个例子:

@ECHO OFF


rem set args

set DIR_BASE="%CD%"

set DIR_DIST="%CD%\dist"

set RESULT="%CD%\res.txt"


rem cleans at first

if exist %RESULT% del /F %RESULT%

if exist %DIR_DIST% rd /s/q %DIR_DIST%

echo "========0 reset finished."

echo "========0 reset finished." >> %RESULT%


cd %DIR_BASE%

call mvn clean install >> %RESULT%

echo "========1 compile finished."

echo "========1 compile finished." >> %RESULT%


rem pkg server

cd %DIR_BASE%

mkdir %DIR_DIST%

cd demo\run

winrar a -r demo.zip *

if exist demo.zip (

  move /Y demo.zip %DIR_DIST% >> %RESULT%

  

  echo "========2 pkged---"

  echo "========2 pkged---" >> %RESULT%

) else (

  echo "========ERROR: demo.zip not found."

  echo "========ERROR: demo.zip not found." >> %RESULT%

)


rem pkg ui

cd %DIR_BASE%

if exist demoUi\target\demo.war (

  copy /Y demoUi\target\demo.war %DIR_DIST% >> %RESULT%

  

  echo "========3 demo.war pkg ok---"

  echo "========3 demo.war pkg ok---" >> %RESULT%

) else (

  echo "========ERROR: demo.war not found."

  echo "========ERROR: demo.war not found." >> %RESULT%

)


rem calc md5

cd %DIR_DIST%

call md5util.bat >> %RESULT%

echo "========4 finish md5 calc---"

echo "========4 finish md5 calc---" >> %RESULT%


cd %DIR_BASE%

echo "========5 all finished!"

echo "========5 all finished!" >> %RESULT%


rem reset args

set DIR_BASE=

set DIR_DIST=

set RESULT=


PAUSE

发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情