windows 批处理中 call 和 cmd /c 的区别
Difference between call and cmd /c in windows batch
谁能解释一下
之间有什么区别
call someBatchFile.bat ...
和
cmd /C someBatchFile.bat ...
他们都被建议给我作为 问题的解决方案,但我不明白为什么他们都有效,更重要的是,如果有任何重大差异我必须注意。
区别在于call
在调用程序的相同上下文中执行另一个批处理文件,因此它们共享相同的环境变量和其他状态(如echo ON/OFF
或延迟扩展),而 cmd /C
在完全独立的上下文中执行另一个批处理文件,因此在被调用的批处理文件中所做的任何更改都 而不是 反映在原始文件。
作为个人笔记,我曾经将通过 call
调用的批处理文件命名为 internal subroutine,而 external subroutine 通过 cmd /C
调用的那个(和 overlay 直接调用的批处理文件没有 call
也没有 cmd /C
,inherits 调用者批处理文件的行为和上下文)。
谁能解释一下
之间有什么区别call someBatchFile.bat ...
和
cmd /C someBatchFile.bat ...
他们都被建议给我作为
区别在于call
在调用程序的相同上下文中执行另一个批处理文件,因此它们共享相同的环境变量和其他状态(如echo ON/OFF
或延迟扩展),而 cmd /C
在完全独立的上下文中执行另一个批处理文件,因此在被调用的批处理文件中所做的任何更改都 而不是 反映在原始文件。
作为个人笔记,我曾经将通过 call
调用的批处理文件命名为 internal subroutine,而 external subroutine 通过 cmd /C
调用的那个(和 overlay 直接调用的批处理文件没有 call
也没有 cmd /C
,inherits 调用者批处理文件的行为和上下文)。