Bat脚本调用方式:
Call,Start,直接调用,三种方式调用批处理,仅限于批处理调用,不是包括exe调用;
1、call,子过程调用的方式;
在A.bat中call B. bat,B.bat执行完成后会回到A.bat,且只有一个线程工作;
若有多个*.bat,则等待上一个bat完成并返回A后,依次执行下一个语句或bat;
2、start,在新建一个线程(新窗口)执行bat;
在A.bat中start B. bat,点击执行后,会出现两个线程,A.bat和B.bat各占一个线程;
若有多个*.bat,则启动线程后,不等待上一个完成直接返回,执行下一个语句或bat;
3、直接调用,在当前线程上内容的跳转,流程改变;
在A.bat中直接调用B. bat,点击执行后,线程的所有权限会转交给B. bat;
如果B.bat退出线程后,则不会跳回 A.bat;
若批处理内,调用的不是*.bat而是*.exe,则:
1、call,视exe为常规语句;
启动后等待exe执行完成,顺序执行;(会二次解析参数)
2、start,视exe为常规语句;
在新窗口启动后,不等待执行完毕,原窗口直接执行后续语句;(不会二次解析参数)
3、直接调用,顺序执行语句,流程不变;
不会在当前线程上跳转,会保持所见流程执行;(且不会二次解析参数)
每个bat过程启动后都会处理%,%d,即%参数替换;若想输出%参数给被调用程序需采用%%;
*.bat中的call的传参,采用%%%%才能传递一个%;
而start和直接调用传参采用%%即可传递一个%;
call是专用于bat设计,虽用于exe,但多做一次参数处理;
start则可用于bat和exe,且多用于后者,无法保证完成次序;
没有特殊原因的话,尽量直接使用exe,保证可见顺序执行,参数简单;