**一是調用範圍不一樣:**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