为什么在使用批处理文件时要使用重新开始调用?

为什么在使用批处理文件时要使用重新开始调用?

看起来我可以使用startcall来执行批处理文件,但是我不确定为什么要使用其中一个而不是另一个。有什么好处?

答案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.

调用不会启动新窗口但可以用来调用标记的子程序。

相关内容