批处理怎么读取和修改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]里我想要的四个值?
提取后还要修改所提取的四个值.这个批处理该怎么写呢? 展开
举例: 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]里我想要的四个值?
提取后还要修改所提取的四个值.这个批处理该怎么写呢? 展开
展开全部
@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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询