gpt4 book ai didi

batch-file - 为什么在不将 “call”附加到该行的情况下调用嵌套批处理文件会退出父批处理文件?

转载 作者:行者123 更新时间:2023-12-03 08:57:05 25 4
gpt4 key购买 nike

我了解如何使用call命令从父文件中调用嵌套的批处理文件,因为这方面有很多资源:

  • CALL
  • CALL(SS64)
  • Bat file termination

  • 但是,我不明白 为什么从另一个调用另一个批处理文件会终止父级。

    对于一个不那么抽象的示例,假设我有一个批处理文件,将各个批处理文件“链接”在一起,并且我 错误地没有在每行前面添加 call:
    foo.bat
    bar.bat

    这只会执行foo.bat,然后退出。为了正确执行这两个命令,我必须在每个语句之前添加调用:
    call foo.bat
    call bar.bat

    为什么第一个功能仍然存在?为什么没有更改?我注意到 call是在1980年代后期发布的MS-DOS 3.3中引入的,因此此功能是否仍在这里是为了实现反向兼容性?

    我想不出它的任何(实际)用法,但是也许我已经习惯于“新的”编程技术。

    最佳答案

    DOS使用简单的文本处理(当您在config.sys中使用FILES=20之类的东西时,它允许20个文件句柄),因此打开文件,读取下一行,关闭文件,然后执行刚读取的行。如果该文件调用了另一个文件,则处理将继续对该文件进行,因此批处理文件仅需要一个文件句柄。

    在Microsoft放入call命令之前,没有办法返回到原始文件(没有使用一些技巧,例如将先前文件的名称作为参数,以及使用临时文件让原始批处理文件知道它已经圆顶了处理,然后可以GOTO文件的下一部分)。

    关于batch-file - 为什么在不将 “call”附加到该行的情况下调用嵌套批处理文件会退出父批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638705/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com