如何在批处理文件中调用内容后返回原调用的标签位置?
批处理脚本实现调用Inventory后返回原标签位置
你的当前脚本中,当在:Forest或:StoryBegin标签下输入I跳转到:Inventory后,执行完Inventory的代码会直接继续运行后续的:StoryBegin标签,无法回到之前的调用位置。要解决这个问题,我们可以通过记录返回标签的方式实现跳转后返回。
解决方案步骤
- 新增一个变量(比如
returnTo),用于存储调用Inventory前的当前标签位置 - 修改
:Inventory的结尾逻辑,执行完后跳转到returnTo变量指定的标签 - 在每个需要调用Inventory的位置,先给
returnTo赋值当前标签,再跳转到Inventory
修改后的完整代码
@echo off setlocal enabledelayedexpansion :Inventory cls echo Inventory: echo - 疗伤药 x3 echo - 铁剑 x1 echo - 地图 x1 echo. pause >nul goto !returnTo! :StoryBegin cls echo === 故事开始 === echo 你站在十字路口,面前有两条路: echo 1. 前往森林 echo 2. 前往城堡 echo I. 查看背包 set /p input=请输入选择: if "%input%" == "1" goto Forest if "%input%" == "2" goto Castle if /i "%input%" == "I" ( set "returnTo=StoryBegin" goto Inventory ) goto StoryBegin :Forest cls echo === 森林 === echo 你进入了幽暗的森林,发现两个方向: echo 1. 前往木屋 echo 2. 爬上小山 echo I. 查看背包 set /p input=请输入选择: if "%input%" == "1" goto House if "%input%" == "2" goto Hill if /i "%input%" == "I" ( set "returnTo=Forest" goto Inventory ) goto Forest :Castle cls echo === 城堡 === echo 你来到了城堡大门,暂时没有可探索的内容。 echo 输入任意键返回十字路口... pause >nul goto StoryBegin :House cls echo === 木屋 === echo 你在木屋里找到了一瓶药水! echo 输入任意键返回森林... pause >nul goto Forest :Hill cls echo === 小山 === echo 你在山顶看到了城堡的全貌,记住了路线。 echo 输入任意键返回森林... pause >nul goto Forest
关键细节说明
setlocal enabledelayedexpansion:启用延迟变量扩展,确保:Inventory中能正确读取returnTo的动态值if /i:忽略输入大小写,输入i或I都能触发背包查看pause >nul:隐藏默认的"请按任意键继续..."提示,让界面更简洁- 每个标签结尾的
goto 当前标签:避免执行完当前逻辑后自动跳转至其他无关标签
内容的提问来源于stack exchange,提问作者Tristan M
相关产品推荐
相关产品推荐

