批处理中运行外部命令的几种方式

据我所知,批处理中运行外部命令有以下几种方式:

  1. start
  2. call
  3. 直接运行

如果是Windows窗口程序,这三种方式的结果是完全一样的:创建新进程,不等待进程结束,直接向下继续运行。
区别就在于运行Windows命令行程序和外部批处理,我们分开来说。


运行Windows命令行程序

start会创建一个新的命令行窗口,当前批处理会继续向下运行,不等待。
call和直接运行都是在当前命令行窗口中运行,并且等待进程结束,它们两个在这里没有区别。


运行外部批处理

区别来了,如果是外部批处理,三种方式会表现出完全不同的三种结果。
start同样还是创建一个新的命令行窗口执行,当前批处理继续向下运行,不等待。
call会在当前命令行窗口中运行,同时等待外部批处理运行结束,然后会继续运行当前批处理后面的内容。另外据我观察,此时并没有创建新进程。
直接运行会破坏当前批处理的运行流程,即直接跳到外部批处理中运行,不会再跳回,当前批处理后面的内容无法被运行,后果严重!


最后顺便一提,运行外部批处理还有一种方式,就是明确使用cmd来运行,强行把外部批处理作为命令行程序来对待:
cmd /c xxx.bat
此时的结果等同于上面说的运行Windows命令行程序。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

扫码去手机上看