首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不调用的情况下从另一个批处理脚本调用带标签的批处理脚本

在不调用的情况下从另一个批处理脚本调用带标签的批处理脚本
EN

Stack Overflow用户
提问于 2019-11-30 17:29:19
回答 1查看 220关注 0票数 3

我发现了cmd批处理脚本的一个有趣特性。问题是:它是一个文档化的特性,还是一个bug?(您知道,一个未记录的意外功能是一个错误:-)

首先,我向您保证,我理解使用CALL调用脚本和不使用CALL调用脚本的区别:

代码语言:javascript
运行
复制
Script.bat
call Script.bat

现在,我有了一个批处理库tools.bat

代码语言:javascript
运行
复制
echo tools.bat ARGS: %1 %2 %3 %4
set LABEL=%1
shift /1
goto %LABEL%

:A
echo A ARGS: %1 %2 %3
goto :eof
:B
echo B ARGS: %1 %2 %3
goto :eof

我从另一个脚本调用它:

代码语言:javascript
运行
复制
@echo off
call :A 1 2 3
call :B 4 5 6
exit /b

:A
:B
tools.bat %*

奇怪但可能有用的行为是,最后一行直接跳到tools.bat中的标签,而不是tools.bat的开头。当我将最后一行替换为调用时,我将不得不大幅重写脚本,因为对于调用,这种意外行为不起作用:

代码语言:javascript
运行
复制
@echo off
call :A 1 2 3
call :B 4 5 6
exit /b

:A
call tools.bat :A %*
goto :eof
:B
call tools.bat :B %*
goto :eof

那么,这个特性是否有文档记录呢?它在WIn7和Win10中都有效。

EN

回答 1

Stack Overflow用户

发布于 2019-11-30 18:38:40

这是一个已知的“黑客攻击”,但没有被microsoft记录下来。其中一个可能的用途是创建一个'libary‘脚本,在这个脚本中,您可以调用特定的函数-> https://stackoverflow.com/a/30170342/388389

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59114834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档