有人能解释一下“”和“”之间的区别吗?
And(以及)
call someBatchFile.bat ...
And(以及)
cmd /C someBatchFile.bat ...
他们都被建议作为解决这个问题的方案,但我不明白它们为什么都有效,更重要的是,是否有任何显著的差异我必须注意。
call someBatchFile.bat ...
cmd /C someBatchFile.bat ...
他们都被建议作为解决这个问题的方案,但我不明白它们为什么都有效,更重要的是,是否有任何显著的差异我必须注意。
call
以与调用程序相同的上下文执行其他批处理文件,因此它们共享相同的环境变量和其他状态(如echo ON/OFF
或延迟扩展),而cmd /C
在完全分离的上下文中执行其他批处理文件,因此所做的任何更改在原始文件中都无法反映。仅作个人记录,我曾经使用call
调用的批处理文件来命名内部子例程,使用通过cmd /C
调用的批处理文件来命名外部子例程(并且没有call
或cmd /C
直接调用的覆盖批处理文件会继承调用批处理文件的行为和上下文)。