批处理怎么读取和修改INI配置文件?

如何用批处理读取INI文件指定项后的键值?举例:1.ini内容为[okm]abc=678zxc=456qwe=789cxz=147[cbd]abc=123qwe=321q... 如何用批处理读取INI文件指定项后的键值?

举例: 1.ini 内容为

[okm]
abc=678
zxc=456
qwe=789
cxz=147

[cbd]
abc=123
qwe=321
qaz=534

wsx=765
edc=258
我想读取[cbd]下abc,qwe,qaz,wsx,这四个的值,但abc,qwe又在 [okm]存在相同的.我该怎么准确的提取[cbd]里我想要的四个值?
提取后还要修改所提取的四个值.这个批处理该怎么写呢?
展开
 我来答
caruko
2013-10-15 · TA获得超过277个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:103万
展开全部
@echo off&setlocal ENABLEDELAYEDEXPANSION
call :解析 1.ini
call :提取 okm abc
call :修改 okm abc newvalue
call :输出 >new.ini
goto :eof


:解析 [参数#1=ini文件路径]
set "op="
for /f " usebackq tokens=1* delims==" %%a in ("%~1") do (
if "%%b"=="" (
set "op=%%a"
) else (
set "##!op!#%%a=%%b"
)
)
goto :eof


:提取 [参数#1=Option] [参数#2=Key]
echo,Option=%~1,Key=%~2,Value=!##[%~1]#%~2!
goto :eof


:修改 [参数#1=Option] [参数#2=Key] [参数#3=value,没有参数3则删除该配置项]
set "##[%~1]#%~2=%~3"
goto :eof


:输出 [>新ini文件路径]
set "op="
for /f "tokens=1-3 delims=#=" %%a in ('set ##') do (
if "%%a"=="!op!" (
echo,%%b=%%c
) else (
echo,%%a
set "op=%%a"
echo,%%b=%%c
)
)
更多追问追答
追问
没怎么看明白,能说明下吗?
追答

只需要在  1 - 6 行之间 加入你想要的操作就可以了, 第一个 goto :eof 之后的内容你完全不用管。


1、比如你要读取 c:\abc efd\1.ini 配置文件(含空格加引号),就用

call :解析 "c:\abc efd\1.ini"

2、比如你要提取显示 okm 下的 abc 的值,就用

call :提取 okm abc

3、你要修改 okm 下 abc 的值 ,改为  999,就用,改多少个值就用多少次:

call :修改 okm abc 999

4,你要输出成新配置文件到d:\abc\newconfig.ini,就用

call :输出 >d:\abc\newconfig.ini
wcv_xyz
2013-10-15 · TA获得超过2578个赞
知道大有可为答主
回答量:6507
采纳率:59%
帮助的人:2377万
展开全部
编写一个合适的list很重要,例如
ini路径 项名 键名 新的值
D:\?\1.ini cbd abc 321
D:\?\1.ini cbd qwe 321
D:\?\1.ini cbd qaz 321
D:\?\1.ini okm cxz 321

根据list结构,批处理就方便编写,这样做的好处是批处理编写好后将是固定的,要修改值间接在list中进行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式