You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Batch脚本goto跳转异常求助:非PC选项调用时modPackChoice提示异常

批处理脚本调用时意外触发Mod包选择提示的问题分析与解决

问题现象

  • compile.bat独立运行时:选择PC作为控制台会弹出Mod包选择提示,选择其他控制台则直接跳过该提示进入后续流程,运行正常。
  • 通过globalCompile.bat调用时:选择PC选项执行正常,但选择非PC选项时,compile.bat意外弹出Mod包选择提示,不符合预期。

问题原因

核心是调用场景下的执行流程没有跳过Mod包选择逻辑段:
当globalCompile.bat传入非PC的consoleChoice参数时,compile.bat的执行路径如下:

  1. 接收第一个参数并赋值给consoleChoice,随后跳转到:consoleChoiceCheck
  2. 由于consoleChoice不为空,不会进入:consoleChoicePrompt,直接向下执行到:modPackSection
  3. 此时%~2为空(global仅传入一个参数),modPackChoice被设为空值
  4. 进入:modPackChoiceCheck后,判断modPackChoice为空,触发:modPackChoicePrompt弹出选择框

而独立运行时选择非PC,是从:consoleChoicePrompt里直接goto section2,天然跳过了:modPackSection,所以没有问题。

修复方案

在compile.bat的:consoleChoiceCheck阶段,新增判断逻辑:如果控制台不是PC,直接跳转到:section2,跳过Mod包选择逻辑段。

修改后的compile.bat关键代码片段:

@echo off
set "consoleChoice=%~1"
goto consoleChoiceCheck
REM console not selected, main compiler prompt not used, pick console
:consoleChoicePrompt
CHOICE /C 12345 /M "Which console are you using? "
IF ERRORLEVEL 5 SET consoleChoice=XB & goto section2
IF ERRORLEVEL 4 SET consoleChoice=PSP & goto section2
IF ERRORLEVEL 3 SET consoleChoice=PS2 & goto section2
IF ERRORLEVEL 2 SET consoleChoice=GC & goto section2
IF ERRORLEVEL 1 SET consoleChoice=PC & goto modPackSection
REM Checks if console was selected from main compiler script/if main compiler script was used
:consoleChoiceCheck
if "%consoleChoice%"=="" goto consoleChoicePrompt
:: 新增:非PC控制台直接跳过Mod包选择逻辑
if not "%consoleChoice%"=="PC" goto section2

:modPackSection
REM get mod pack choice from main compiler script
set "modPackChoice=%~2"
goto modPackChoiceCheck
REM mod pack not selected, main compiler prompt not used, pick mod pack
:modPackChoicePrompt
CHOICE /C 1234 /M "Which Mod Pack are you using? "
IF ERRORLEVEL 4 SET modPackChoice=MUE & goto section2
IF ERRORLEVEL 3 SET modPackChoice=BHE & goto section2
IF ERRORLEVEL 2 SET modPackChoice=AXE & goto section2
IF ERRORLEVEL 1 SET modPackChoice=X2UP & goto section2
REM Checks if mod pack was selected from main compiler script/if main compiler script was used
:modPackChoiceCheck
if "%modPackChoice%"=="" goto modPackChoicePrompt

:section2
...

这样无论独立运行还是被调用,非PC控制台都会直接跳过Mod包选择流程,符合预期。

内容的提问来源于stack exchange,提问作者E. Reed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:06:19