如何用批处理读取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]里我想要的四个值?
提取后还要修改所提取的四个值.这个批处理该怎么写呢?
没怎么看明白,能说明下吗?
追答只需要在 1 - 6 行之间 加入你想要的操作就可以了, 第一个 goto :eof 之后的内容你完全不用管。
1、比如你要读取 c:\abc efd\1.ini 配置文件(含空格加引号),就用
call :解析 "c:\abc efd\1.ini"2、比如你要提取显示 okm 下的 abc 的值,就用
3、你要修改 okm 下 abc 的值 ,改为 999,就用,改多少个值就用多少次:
4,你要输出成新配置文件到d:\abc\newconfig.ini,就用
不行啊,提取出来在那里? 而且call :输出>2.ini,输出以后,整个INI全乱了.我需要的是能把我要的几个值,提取到一个新的文本,我修改了文本里的内容,然后再写入1.ini配置文件里.能有其他的方式写吗?
追答第一, INI 文件配置项跟顺序无关,不影响使用。
第二,我不清楚你要批处理的目的是什么,方便修改? 哪我建议你直接用快捷方式到桌面更好,直接打开修改,方便快捷。
批处理的作用在于 大量的节省人的操作...
我还以为你有很多ini 文件需要修改,用批处理来处理。
另外,直接在批处理 设置 好你要修改的项 即可,不需要提取到新文件里,如果你要这么做,那么用这个:
call :提取 okm abc >新文件.ini追问我确实是需要大量的修改INI文件,所以手动填写修改是很麻烦的事.每个INI文件在不同的目录,我是想把目录名写在一个文本里,然后批处理提取我所需要修改的INI文件里的值到一个文本,然后我再把我要修改的值在文本里修改.再对应目录写回该目录里的原INI文件里.
追答你这个做法不合理。
你应该要先知道 那些 配置项 需要修改,修改为什么值,然后执行批处理一次 修改所有值不对的ini
要修改成什么值我肯定是知道的,这个值每一个都不一样.那些要修改的我也肯定是知道,但是分开在不同的目录,我不可能一个一个进去修改.,我只是把需要修改的INI文件里的值全部提取到一个文本,然后我在文本里修改以后,再把这文本里的值写入提取出来位置.
追答那就简单多了,仔细代码阅读 说明,就可以了,默认没有开启回写。
未测试,虽然代码检查过,但可能会有问题。
追问太头晕了.我都不知道该怎么改? list.txt里是什么路径格式? 绝对路径? 还是怎么? 还有这些需要提取出来的值怎么提取出来? 那些值我也是需要的. 而且回写,我该怎么写?
追答路径随便,绝对,相对都可以。
比如:
c:\abc\a.ini
d:\ert fwa\d.ini
ab.ini
123\321\f.ini
这是提取所有值,你直接在all.txt文本中搜索,更改。
把
:call :回写 改为
call :回写
就可以,冒号是当注释用,这一行不会运行。
为什么提取所有行,是因为你说每个ini文件都不同,那么你要怎么定义那个ini文件提取那些行?
我觉得你走入了思维误区,你都知道要更新那些配置项了,还要提取出来干嘛。
你自己写一个文本,里面写好要更新哪些配置项,然后用程序,自动查找对比所有ini文件,把配置项更新过去可以了。