求助:尝试用Batch修改exe.conf指定key的value失败,求解决方案
Batch 修改 exe.conf 中指定配置项的 Value 值方案
原代码存在的问题
- 错误使用
findstr /v:该命令是删除匹配行,而非替换行内内容 - 配置项Key不匹配:目标是
FileName,但代码中写的是row_process - 变量与引号处理混乱:延迟扩展用法错误,引号嵌套导致语法异常
- 文件路径不一致:读取的是
test.exe.conf,但最终替换的是fileName.conf
正确的Batch脚本
@echo off setlocal enabledelayedexpansion :: 设置新的value值,不需要额外加单引号 set "newValue=20221008.txt" :: 源文件路径 set "sourceFile=test.exe.conf" :: 临时输出文件 set "tempFile=test.exe.conf.tmp" :: 清空临时文件(如果存在) if exist "%tempFile%" del "%tempFile%" :: 逐行处理源文件 for /f "delims=" %%a in ('type "%sourceFile%"') do ( set "line=%%a" :: 判断当前行是否是目标配置项 echo !line! | findstr /c:"key=\"FileName\"" >nul if !errorlevel! equ 0 ( :: 替换value部分:先截取key="FileName"之后的内容,再替换第一个value值 set "newLine=!line:value="=value="%newValue%"!" echo !newLine! >> "%tempFile%" ) else ( :: 非目标行直接写入临时文件 echo !line! >> "%tempFile%" ) ) :: 替换原文件 move /y "%tempFile%" "%sourceFile%" >nul endlocal echo 配置项修改完成
脚本说明
@echo off:关闭命令行回显,让输出更干净setlocal enabledelayedexpansion:启用延迟扩展,确保循环内变量能正常更新- 变量定义:明确源文件、临时文件和新的value值,方便后续修改
- 逐行处理:通过
for /f读取文件每一行,判断是否为目标配置项 - 替换逻辑:使用字符串替换语法
!line:old=new!,精准替换目标行的value属性值 - 替换原文件:用临时文件覆盖原文件,避免修改过程中损坏源文件
内容的提问来源于stack exchange,提问作者Giovanni Morales
相关产品推荐
相关产品推荐

