Windows批处理中的call和cmd/c之间的区别

car*_*rra 5 windows cmd batch-file call

有人可以解释一下它们之间的区别

call someBatchFile.bat ...
Run Code Online (Sandbox Code Playgroud)

cmd /C someBatchFile.bat ...
Run Code Online (Sandbox Code Playgroud)

他们都被建议我作为这个问题的解决方案,但我不明白为什么他们都工作,更重要的是,如果有任何重大的差异我必须意识到.

Aac*_*ini 9

区别在于在调用程序的相同上下文call执行其他批处理文件,因此它们共享相同的环境变量和其他状态(如扩展或延迟),而在完全独立的上下文中执行其他批处理文件,因此任何更改在调用的批处理文件中生成的内容不会反映在原始文件中.echo ON/OFFcmd /C

正如我个人而言,我用来命名内部子程序通过调用批处理文件call,以及外部子程序的一个通过调用cmd /C(和覆盖批处理文件中直接引用不callcmd /C,是继承行为和呼叫者批处理文件的情况下).