看起来我可以使用start
或call
来执行批处理文件,但是我不确定为什么要使用其中一个而不是另一个。有什么好处?
答案1
call
在同一个解释器实例中运行给定的脚本,因此它只能用于批处理文件,但它允许被调用的脚本使用 修改调用者的环境set
。在 Windows NT 中,call
还允许将标签作为子程序调用;例如call :foo
。
另一方面,start
使用 ShellExecute() 函数,因此它几乎可以打开 Windows 本身可以打开的所有内容,包括文档、其他文件,甚至 Internet URL。start
还有选项可以打开单独的控制台窗口、使用不同的进程优先级以及运行程序而不等待其完成。但是,如果您start
与批处理文件一起使用,它将在分离解释器,并且对环境的任何修改都不会被调用者看到。
答案2
C:\>start /?
Starts a separate window to run a specified program or command.
C:\>call /?
Calls one batch program from another.
调用不会启动新窗口但可以用来调用标记的子程序。