@echo offtitle XXX自动发布脚本echo "XXX自动发布脚本"@echo 开始更新项目call "D:\SVN\VisualSVN Server\bin\svn.exe" update "D:\TJBIServer\TJBIService"echo 更新完成......@echo 开始编译打包项目call ant -f d:\TJBIServer\TJBIService\build.xmlecho 打包完成......@echo 开始部署war包call "d:\apache-tomcat-6.0.41\bin\shutdown.bat"ping -n 5 127.0.0.1 > nulldel D:\apache-tomcat-6.0.41\webapps\TJBIServer.warrmdir /s/q D:\apache-tomcat-6.0.41\webapps\TJBIServercopy D:\TJBIServer\TJBIService\TJBIServer.war D:\apache-tomcat-6.0.41\webappsecho 部署完成......@echo 开始重启服务call "d:\apache-tomcat-6.0.41\bin\startup.bat"echo 重启完成......
遇到问题:在目录下直接执行ant编译(ant build.xml),不用call调用,会出现bat脚本不能继续往下执行。
解决办法:
使用ant来做每日构建有写日子了 今天想在每日构建脚本中加入重启tomcat的操作 问题来了 先看脚本
- stop tomcat...
- call "D:\Program Files\apache-tomcat-6.0.18\bin\shutdown.bat"
- ant -f D:\dailybuild\build.xml war
- start tomcat...
- call "D:\Program Files\apache-tomcat-6.0.18\bin\startup.bat"
@echo stop tomcat...call "D:\Program Files\apache-tomcat-6.0.18\bin\shutdown.bat"ant -f D:\dailybuild\build.xml war@echo start tomcat...call "D:\Program Files\apache-tomcat-6.0.18\bin\startup.bat"shutdown.bat是可以执行的 接下来的ant也是可以执行的 但是再下来的startup.bat就不能执行了 就是说调用完ant build.xml文件后没有返回 百思不得其解 放狗搜去 无意中看到这么一句
引用
call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。
摘自: 虽然build.xml不是bat文件 但同为外部脚本,用call试试 果然 管用了 - call ant -f D:\dailybuild\build.xml war
call ant -f D:\dailybuild\build.xml war执行完后成功执行了startup.bat
引用
原来如此 call并不仅仅用来调用bat,而且可以调用所有的其他脚本