windows中的CMD命令学习Tips

社会主义新天地 提交于 2020-02-29 05:58:05

如何在一个CMD命令中调用其他多个CMD命令

  • 可以使用 start 或者 call,不同之处在于:

**一是调用范围不同:**CALL主要用来进行批处理的内部调用如CALL:PEND和一些DOS命令的调用如CALL SET TEST=2,但也可以调用其他可执行文件,而START则不能进行内部调用,但其可以执行基本上所有的外部程序,还可以执行SHELL,如打开文件夹START "" "%WINDIR%",安装网络打印机START "" "\IP\Printer",同时需要注意有无START调用外部程序的区别;

**二是调用方式不同:**CALL实际上调用,所以在CALL另一个批处理时是在同一窗体进程里执行,而START是执行,所以在执行另外一个批处理时是在不同的窗体进程里执行,也就是说在新的进程里执行,虽然START可以加入B参数,但其结果却完全不同.如我们使用CALL SET TEST=2和START /B SET TEST=2看似执行的结果相同,但是我们发现后者有两个进程,而且在窗体里要执行两次EXIT才能退出,所以当我们使用START来执行一个批处理后最好在被调用的批处理中也加一个EXIT,否则无法退出被调用的批处理的DOS窗体,但是使用CALL调用时如果在被调用的批处理中存在EXIT则会直接结束原始和别调用的批处理程序,这是一个非常严重的问题,建议在被调用的程序中使用goto:eof来取代EXIT;.

**三是调用结果不同:**CALL调用不仅可以把参数或变量传给被调用的批处理,而且被调用的批处理也可以设置参数或变量以便回传,而START只能把参数或变量传给被调用的批处理,却不能回传参数或变量,这一点实际上是第二点的延伸.至于此我们还必须注意使用CALL调用其他批处理中我们使用GOTO的时候建议使用不同的节来跳转,否则可能跳转到原批处理中而不能完整的执行被调用的批处理.

简单来说使用 start ,被调用的命令在不同的进程中执行,使用 call ,被调用的命令在同一进程中执行。

参考

关于进程相关

  • 通过 tasklist|findstr "java" 可以找到进程名为 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。
  • 通过 netstat -aon|findstr "20011" 可以找到占用端口号 20011 的进程id,如下
D:\Users\dev>netstat -aon|findstr "20011"
  TCP    0.0.0.0:20011          0.0.0.0:0              LISTENING       164280
  • 通过 tskill 164280 可以杀死该进程

参考

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!