使用batch脚本调用另一个batch脚本遇到的问题
问题
最近写了两个batch脚本:a.bat 和 b.bat,a.bat中使用call b.bat调用执行b.bat,b.bat里面会使用start xx.exe启动一个会一直运行的可执行程序。执行之后发现,a.bat里面调用b.bat之前的日志会打印,b.bat里面的日志也可以正常打印,但是a.bat里面call b.bat语句后面的日志却不打印。而且当执行比如 : a.bat param1之后,再执行a.bat param2发现,命令行会提示:另一个程序正在使用此文件,进程无法访问。什么鬼,a.bat param1明明已经执行完了。
探索
难道是b.bat里面的start语句会阻塞后续的执行,但是实际情况不是的,b.bat里面start语句后面的语句可以正常执行并打印log, 说明start命令会另起一个进程执行,但不会影响b.bat的执行。但是为什么会影响到a.bat的执行呢?
解决
既然start不会影响其所在batch脚本文件的执行,那么尝试将b.bat整体迁移到a.bat里面,取代在a.bat里面使用call命令调用b.bat, 即在a.bat里面直接使用start命令。果不其然,改动之后问题解决。
问题虽然解决,但还是不知道为什么会这样,大家有知道原因的吗?欢迎留言。