回复 21# Batcher
感谢大佬指点迷津,问题已解决。以下是修改过的代码。 | @echo off | | | | setlocal EnableDelayedExpansion | | | | rem set "INPUT_FILE=file.txt" | | set "INPUT_FILE=D:\Program Files (x86)\input.ini" | | set "OUTPUT_FILE=D:\Program Files (x86)\output.ini" | | set "DATE_TIME=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%" | | set "BAK_FILE=D:\Program Files (x86)\common_bak%DATE_TIME%.ini" | | copy "%INPUT_FILE%" "%BAK_FILE%" | | | | rem 删除上次的输出文件 | | if exist "%OUTPUT_FILE%" del "%OUTPUT_FILE%" | | | | for /f "usebackq tokens=1,2 delims=:" %%o in (`findstr /n .* "%INPUT_FILE%"`) do ( | | | | if "%%p" equ "" ( | | | | echo. >>"%OUTPUT_FILE%" | | ) else ( | | for /f "tokens=1* delims==" %%c in ("%%p") do ( | | if /i "%%c"=="[SERVER_DATA_3]" ( | | set "Mod_flag=true" | | | | ) | | | | echo %%c| findstr "# [" >nul && ( | | set line=%%c | | ) || ( | | | | if /i "!Mod_flag!" equ "true" ( | | if /i "%%c" == "SERVER_USER" ( | | | | set line=%%c=cccccc | | set "ChangeU=true" | | ) else if /i "%%c" == "SERVER_PASSWORD" ( | | | | set line=%%c=cccccc | | set "ChangeP=true" | | ) else ( | | set line=%%c=%%d | | ) | | | | if /i "!ChangeU!" equ "true" ( | | if /i "!ChangeP!" equ "true" ( | | set "Mod_flag=false" | | ) | | ) | | ) else ( | | set line=%%c=%%d | | ) | | ) | | | | echo !line!>>"%OUTPUT_FILE%" | | ) | | ) | | ) | | | | move /y "%OUTPUT_FILE%" "%INPUT_FILE%" | | endlocal | | echo "文件处理完成" | | pauseCOPY |
|