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