call和cmd / c在windows批处理之间的区别

有人可以请解释之间的区别

call someBatchFile.bat ... 

 cmd /C someBatchFile.bat ... 

他们都被build议我解决这个问题,但是我不明白为什么他们都工作,更重要的是,如果我有什么重大差别,我必须注意。

不同之处在于call在调用者程序的相同上下文中执行另一个批处理文件,因此它们共享相同的环境变量和其他状态(如echo ON/OFF或延迟扩展),而cmd /C执行另一个批处理文件一个完全分离的上下文,所以在被调用的批处理文件中所做的任何更改都不会反映在原始文件中。

就像个人笔记一样,我用内部子程序来调用通过call调用的批处理文件,而通过cmd /C调用外部子程序 (并直接调用批处理文件而不call或者cmd /C ,这会继承行为和上下文的调用者批处理文件)。