**一是调用范围不一样:**CALL主要用来进行批处理的内部调用如CALL:PEND和一些DOS命令的调用如CALL SET TEST=2,但也能够调用其余可执行文件,而START则不能进行内部调用,但其能够执行基本上全部的外部程序,还能够执行SHELL,如打开文件夹START "" "%WINDIR%",安装网络打印机START "" "\IP\Printer",同时须要注意有无START调用外部程序的区别;html
**二是调用方式不一样:**CALL实际上调用,因此在CALL另外一个批处理时是在同一窗体进程里执行,而START是执行,因此在执行另一个批处理时是在不一样的窗体进程里执行,也就是说在新的进程里执行,虽然START能够加入B参数,但其结果却彻底不一样.如咱们使用CALL SET TEST=2和START /B SET TEST=2看似执行的结果相同,可是咱们发现后者有两个进程,并且在窗体里要执行两次EXIT才能退出,因此当咱们使用START来执行一个批处理后最好在被调用的批处理中也加一个EXIT,不然没法退出被调用的批处理的DOS窗体,可是使用CALL调用时若是在被调用的批处理中存在EXIT则会直接结束原始和别调用的批处理程序,这是一个很是严重的问题,建议在被调用的程序中使用goto:eof来取代EXIT;.java
**三是调用结果不一样:**CALL调用不只能够把参数或变量传给被调用的批处理,并且被调用的批处理也能够设置参数或变量以便回传,而START只能把参数或变量传给被调用的批处理,却不能回传参数或变量,这一点其实是第二点的延伸.至于此咱们还必须注意使用CALL调用其余批处理中咱们使用GOTO的时候建议使用不一样的节来跳转,不然可能跳转到原批处理中而不能完整的执行被调用的批处理.windows
简单来讲使用 start ,被调用的命令在不一样的进程中执行,使用 call ,被调用的命令在同一进程中执行。网络
java.exe
的全部进程,以下D:\Users\dev>tasklist|findstr "java" java.exe 174592 Console 1 133,140 K java.exe 173624 Console 1 130,752 K java.exe 175448 Console 1 131,960 K java.exe 170280 Console 1 122,628 K java.exe 179032 Console 1 137,132 K java.exe 176544 Console 1 133,040 K java.exe 174636 Console 1 133,004 K
taskill /F /im java.exe
能够批量杀死 进程名为 java.exe
的全部进程,以下D:\Users\dev>taskkill /F /im java.exe 成功: 已终止进程 "java.exe",其 PID 为 174592。 成功: 已终止进程 "java.exe",其 PID 为 173624。 成功: 已终止进程 "java.exe",其 PID 为 175448。 成功: 已终止进程 "java.exe",其 PID 为 170280。 成功: 已终止进程 "java.exe",其 PID 为 179032。 成功: 已终止进程 "java.exe",其 PID 为 176544。 成功: 已终止进程 "java.exe",其 PID 为 174636。
D:\Users\dev>netstat -aon|findstr "20011" TCP 0.0.0.0:20011 0.0.0.0:0 LISTENING 164280