求助:制作符合要求的Fortnite分辨率修改批处理文件
Fortnite分辨率修改批处理优化方案
需求回顾
- 可在任意文件夹运行
- 修改后用新值完全替换原有分辨率值
- 修改后自动保存配置文件
原代码存在的问题
- 硬编码旧分辨率值(1280/1024),只能替换固定分辨率,无法适配用户当前的任意分辨率
- 对同一文件分两次处理,第二次输出会覆盖第一次结果,导致仅第二个分辨率值被替换
- 依赖配置文件和
StretchRes.bat在当前目录,无法实现任意文件夹运行 - 文件操作逻辑存在覆盖风险,可能损坏原配置文件
修正后的批处理代码
@echo off setlocal enabledelayedexpansion :: 定位Fortnite的GameUserSettings.ini默认路径 set "iniPath=%USERPROFILE%\AppData\Local\FortniteGame\Saved\Config\WindowsClient\GameUserSettings.ini" set "tempIni=%iniPath%.tmp" :: 读取当前配置中的分辨率 for /f "tokens=2 delims==" %%a in ('findstr /i "^ResolutionSizeX=" "%iniPath%"') do set "currentX=%%a" for /f "tokens=2 delims==" %%a in ('findstr /i "^ResolutionSizeY=" "%iniPath%"') do set "currentY=%%a" :: 提示用户输入新分辨率 echo 当前分辨率:%currentX% x %currentY% echo 输入新的宽度值: set /p newX= echo 输入新的高度值: set /p newY= :: 处理配置文件,仅替换分辨率行,保留其他内容 ( for /f "delims=" %%i in ('type "%iniPath%"') do ( set "line=%%i" if "!line:~0,15!"=="ResolutionSizeX=" ( echo ResolutionSizeX=%newX% ) else if "!line:~0,15!"=="ResolutionSizeY=" ( echo ResolutionSizeY=%newY% ) else ( echo !line! ) ) ) > "%tempIni%" :: 原子替换原文件,避免损坏 move /y "%tempIni%" "%iniPath%" >nul :: 处理同目录下的StretchRes.bat(如果存在) if exist "%~dp0StretchRes.bat" ( set "batPath=%~dp0StretchRes.bat" set "tempBat=%batPath%.tmp" ( for /f "delims=" %%i in ('type "%batPath%"') do ( set "line=%%i" set "line=!line:%currentX%=%newX%!" set "line=!line:%currentY%=%newY%!" echo !line! ) ) > "%tempBat%" move /y "%tempBat%" "%batPath%" >nul echo StretchRes.bat已更新 ) echo 分辨率已修改为 %newX% x %newY% pause endlocal
方案说明
任意文件夹运行:
- 自动定位Fortnite配置文件的默认系统路径,无需依赖当前目录存在配置文件
- 处理
StretchRes.bat时使用脚本自身所在目录(%~dp0),确保无论在哪运行都能找到该文件
替换原有值:
- 先读取当前配置中的分辨率值,再用用户输入的新值精准替换对应行,适配任意原有分辨率
- 一次遍历完成两个分辨率值的替换,避免多次处理导致的内容覆盖
保存修改:
- 使用临时文件暂存修改内容,再通过
move /y原子操作替换原文件,避免原配置文件损坏 - 处理完成后自动完成文件替换,无需手动保存
- 使用临时文件暂存修改内容,再通过
内容的提问来源于stack exchange,提问作者BLASTED246
相关产品推荐
相关产品推荐

