gpt4 book ai didi

batch-file - GOTO :EOF return to? 在哪里

转载 作者:行者123 更新时间:2023-12-03 08:09:01 28 4
gpt4 key购买 nike

我试图了解代码中的确切位置 GOTO :EOF还给?

这是代码:

SET count=1 
FOR /f "tokens=*" %%G IN (somefile.txt) DO (call :subroutine "%%G")
GOTO :EOF

:subroutine
echo %count%:%1
set /a count+=1
GOTO :EOF

最佳答案

:EOF 是 Microsoft 在命令 GOTO 的文档中解释的预定义标签。在命令提示符窗口中运行的帮助输出 goto /? 还解释了 End Of File 的这个特殊标签。但是只有在默认情况下启用命令扩展时才支持此预定义标签。

在命令提示符窗口中运行的帮助输出 call /? 以及命令 CALL 的文档当然也解释了 goto :EOF 应该用于退出使用 call :Label 调用的子例程。

子例程只不过是嵌入在当前批处理文件中的另一个批处理文件,使用命令 call 调用。如果子程序在批处理文件的末尾,则真正的文件结束标记子程序的结束。

但是一个批处理文件中可以有多个子程序。

因此,命令解释器需要一个命令来在到达命令处理中的特定行时退出子例程并返回到调用命令行。 goto :EOFexit /B 都可以在任何地方用于退出子程序或退出当前批处理文件。

在有问题的批处理代码中, 第一个 goto :EOF 需要 退出批处理文件 处理,而不会在完成循环后出现不需要的子程序代码。

提问者批处理代码中的 goto :EOF用于退出子程序并在 FOR _07920第二行继续处理。它不退出批处理文件的处理,它只退出子程序的处理。

注1: goto EOF 不带冒号要求批处理文件中确实存在以:EOF开头的一行,即文件中必须存在跳转标签EOFgoto :EOF 总是会导致退出子程序/批处理并启用命令扩展,即使批处理文件中存在标签 EOF 因为一行以 :EOF 开头。

注 2: 命令 EXIT 不带参数 /B 导致退出整个命令进程,独立于调用层次结构,独立于 Windows 命令处理器的启动方式 - 参数 /K 保持 运行窗口时保持 _0jit_code 为 _07x10 命令使用 cmd.exe 关闭 在命令处理完成后用于双击批处理文件。因此,应该在批处理文件中明智地使用没有 /Cexit(最好:从不)。

注 3: /B 不适用于禁用命令扩展,如以下代码所示:

@echo off
setlocal DisableExtensions
echo Use command exit /B with command extensions disabled.
exit /B

从命令提示符窗口中执行此批处理文件会导致输出错误消息:

The system cannot find the batch label specified - EOF



换句话说,没有额外退出代码的 exit /Bexit /B 完全一样,因此也取决于命令扩展。 goto :EOF 没有 exit 没有或有退出代码总是有效。

注 4: /B 不受 ERRORLEVEL 影响,但 Microsoft GOTO 文档对此主题保持沉默。 goto :EOF 由 Microsoft 将 exit /B # 设置为 ERRORLEVEL as documented。也可以使用 # 代替 exit /B # 退出子例程,在调用子例程的命令行上评估特定的退出代码,例如使用运算符 goto :EOF&& 或在使用 || 调用命令行后的下一个命令。但是,通常不需要显式退出批处理文件或具有特定退出代码的子例程,因为 if errorlevel Xgoto :EOF 都不会修改 exit /B 的当前值。

有关 ERRORLEVEL 行为的详细信息,请参阅:
  • What are the ERRORLEVEL values set by internal cmd.exe commands?
  • Which cmd.exe internal commands clear the ERRORLEVEL to 0 upon success?
  • Single line with multiple commands using Windows batch file
  • 关于batch-file - GOTO :EOF return to? 在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37515901/

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