1
Q
差异
A
回答
5
的区别在于call
在呼叫者程序的相同的上下文执行其他批处理文件,所以它们共享相同的环境变量和其他状态(如echo ON/OFF
或延迟扩展),而cmd /C
执行其他批处理文件在完全分开的上下文中,因此在被调用的批处理文件中所做的任何更改都是原始文件中反映的而不是。
正如我个人而言,我用来命名内部子程序通过call
调用批处理文件,并外部子程序一个通过cmd /C
(和覆盖直接调用,而不call
也不cmd /C
批处理文件调用, 继承调用者批处理文件的行为和上下文)。
相关问题
第二条语句启动一个新进程,someBatchFile.bat对环境变量所做的任何更改都不会影响当前批处理文件,也不会对其进行显示。可能很好,可能会很糟糕。 –
请参阅[这个答案](http://stackoverflow.com/questions/36095847/why-is-there-no-need-for-call-to-return-from-called-batch-script-which-is-invo/36096956#36096956)。 – Aacini
@Aacini,那是我正在寻找的答案。由于链接的问题不同,我认为如果你在这里回答它也会有好处。请你这样做,以便我可以将其标记为已回答? – carlossierra