【问题标题】:Difference between call and cmd /c in windows batchwindows批处理中call和cmd /c的区别
【发布时间】:2016-12-27 13:51:28
【问题描述】:

谁能解释一下有什么区别

call someBatchFile.bat ...

还有

cmd /C someBatchFile.bat ...

他们都被建议给我作为this 问题的解决方案,但我不明白为什么它们都有效,更重要的是,如果有任何重大差异我必须注意。

【问题讨论】:

  • 第二条语句启动一个新进程, someBatchFile.bat 对环境变量所做的任何更改都不会影响您当前的批处理文件并且不会对其可见。可能是好的,也可能是坏的。
  • this answer
  • @Aacini 这就是我正在寻找的答案。由于链接的问题不同,我认为如果您也在这里回答它会有所帮助。请您这样做,以便我可以将其标记为已回答?

标签: windows batch-file cmd call


【解决方案1】:

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

作为个人说明,我曾经将通过 call 调用的批处理文件命名为 internal subroutine,而将通过 cmd /C 调用的批处理文件命名为 external subroutine(以及覆盖在没有callcmd /C 的情况下直接调用的批处理文件,继承调用者批处理文件的行为和上下文)。

【讨论】:

    猜你喜欢
    • 2016-03-27
    • 2021-05-30
    • 1970-01-01
    • 2013-11-15
    • 2010-09-14
    • 2013-01-25
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多