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

Cmd.exe字体突发变更问题:配置安装器选项触发异常排查

Cmd.exe字体异常问题排查(选项[2]触发)

我开发了一款带多安装选项的配置安装器,选择选项[2]后,Cmd.exe的字体突然变为非标准的特殊样式,找不到原因;其他用户使用该安装器时无此问题。

相关代码片段

:localization
cls
set "fz="
set "localization01="
set "localization02="
set "localization03="
set "localization04="
del /f /q "config_temp\installed.fz" 2>nul
findstr /i /r /c:"FANTAZIA localization files have been installed successfully." "%apb%\APBGame\Localization\GER\EULA.GER" >nul 2>nul
if %errorlevel%==0 (
    set "localization01=[92m(+)[0m"
    @break > "config_temp\installed.fz"
)
findstr /i /r /c:". colorized weapon names and categories.*\(\+\).*" "%apb%\APBGame\Localization\GER\EULA.GER" >nul 2>nul
if %errorlevel%==0 (
    set "localization02=disable colorized weapon names and categories"
    @break > "config_temp\installed.fz"
) else (
    set "localization02=enable colorized weapon names and categories"
)
findstr /i /r /c:". rainbow colored text in player inspect windows.*\(\+\).*" "%apb%\APBGame\Localization\GER\EULA.GER" >nul 2>nul
if %errorlevel%==0 (
    set "localization03=disable rainbow colored text in player inspect windows"
    @break > "config_temp\installed.fz"
) else (
    set "localization03=enable rainbow colored text in player inspect windows"
)
findstr /i /r /c:". fantazia related localization changes.*\(\+\).*" "%apb%\APBGame\Localization\GER\EULA.GER" >nul 2>nul
if %errorlevel%==0 (
    set "localization04=disable fantazia related localization changes"
    @break > "config_temp\installed.fz"
) else (
    set "localization04=enable fantazia related localization changes"
)
if exist "config_temp\installed.fz" (
    xcopy /s /y /q "config\APBGame\Movies" "%apb%\APBGame\Movies" >nul
    xcopy /s /y /q "config\APBGame\Splash" "%apb%\APBGame\Splash" >nul
) else (
    xcopy /s /y /q "config_backup\APBGame\Movies" "%apb%\APBGame\Movies" >nul
    xcopy /s /y /q "config_backup\APBGame\Splash" "%apb%\APBGame\Splash" >nul
)
echo note: localization variations [2], [3] and [4] are togglable.
echo.
echo [2] install localization files %localization01%
echo.
echo [2] %localization02%
echo.
echo [3] %localization03%
echo.
echo [4] %localization04%
echo.
echo [5] create shortcut
echo.
echo [C] color picker
echo.
echo [U] uninstall
echo.
echo [B] go back
set /p "="<nul
for /f "skip=1 delims= eol=" %%$ in ('replace ? . /u /w') do if not defined # set "fz=%%$" & echo(
goto localization_list

:localization_list
if "%fz%"=="" goto localization
if /i "%fz%"=="1" goto localization/mission_titles
if /i "%fz%"=="2" goto localization/colorized_weapon_names_and_categories_check
if /i "%fz%"=="3" goto localization/rainbow_colored_text_in_player_inspect_windows_check
if /i "%fz%"=="4" goto localization/fantazia_related_localization_changes_check
if /i "%fz%"=="5" goto localization/shortcut
if /i "%fz%"=="c" goto localization/color_picker/general
if /i "%fz%"=="u" goto localization/uninstall
if /i "%fz%"=="b" (goto menu) else (goto localization)

:localization/colorized_weapon_names_and_categories_check
if not exist "%apb%\APBGame\Localization\GER\EULA.GER" (goto localization/warning)
findstr /i /c:". colorized weapon names and categories" "%apb%\APBGame\Localization\GER\EULA.GER" >nul
if %errorlevel%==0 (goto localization/colorized_weapon_names_and_categories) else (goto localization/warning)

:localization/colorized_weapon_names_and_categories
findstr /i /r /c:". colorized weapon names and categories.*\(\+\).*" "%apb%\APBGame\Localization\GER\EULA.GER" >nul 2>nul
if %errorlevel%==0 (
    del /f /q "%apb%\APBGame\Localization\GER\InventoryItemTypes.GER"
    del /f /q "%apb%\APBGame\Localization\GER\ShopUIFilters.GER"
    echo [92mmodifying: EULA.GER ^(1^)[0m
    powershell -noprofile -command "$apb=(gc config_temp\path.txt)+'\APBGame\Localization\GER\EULA.GER';$null=new-item -force $apb -value ((gc -encoding utf8 $apb) -replace ('. colorized weapon names and categories.*\(\+\).*','. colorized weapon names and categories') | out-string)"
    goto localization
)
findstr /i /r /c:". colorized weapon names and categories.*\(\+\).*" "%apb%\APBGame\Localization\GER\EULA.GER" >nul 2>nul
if %errorlevel%==1 (
    xcopy /s /y /q "config_localization variations\colorized weapon names and categories\APBGame" "%apb%\APBGame" >nul
    echo [92mmodifying: EULA.GER ^(1^)[0m
    powershell -noprofile -command "$apb=(gc config_temp\path.txt)+'\APBGame\Localization\GER\EULA.GER';$null=new-item -force $apb -value ((gc -encoding utf8 $apb) -replace ('. colorized weapon names and categories.*','. colorized weapon names and categories <color:R=0.078 G=1 B=0>(+)<color:/>') | out-string)"
    goto localization
)

排查与解决建议

  • ANSI转义序列兼容性问题:代码中使用[92m这类ANSI颜色代码,部分Cmd环境因缺少转义符(正确格式应为\e[92m)或不支持虚拟终端,导致解析错误触发字体变更。可在脚本开头添加开启虚拟终端支持的命令:
    reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1 /f >nul 2>nul
    
  • PowerShell操作的隐性影响:选项[2]中的PowerShell命令可能临时修改控制台代码页,可在调用前后重置代码页:
    chcp 65001 >nul
    powershell -noprofile -command "...你的原命令..."
    chcp 437 >nul
    
  • 本地环境异常:其他用户无此问题,大概率是本地控制台字体缓存损坏或第三方工具(杀毒软件、MOD管理器等)干扰。可右键Cmd窗口标题栏→属性→字体→选择默认字体(如Consolas)→点击“默认值”保存;同时临时关闭第三方工具测试。

内容的提问来源于stack exchange,提问作者leiseg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:47:37