admin 管理员组

文章数量: 887021


2024年2月21日发(作者:createtempfile是什么意思)

bat读写ini文件的函数

BAT脚本可以通过读写INI文件来记录和获取配置信息。INI文件是一种常见的配置文件格式,在Windows系统中被广泛应用。

读取INI文件的函数:

```

setlocal EnableDelayedExpansion

set 'INI_FILE='

set 'SECTION=[Section1]'

set 'KEY=Key1'

for /F 'usebackq delims=' %%a in ('%INI_FILE%') do (

set 'LINE=%%a'

REM 去掉行首尾的空格和制表符

set 'LINE=!LINE: =!'

set 'LINE=!LINE: =!'

set 'LINE=!LINE: =!'

REM 如果是[section]行,则判断是否是要读取的section

if '!LINE:~0,1!'=='[' (

set 'CUR_SECTION=!LINE!'

set 'CUR_SECTION=!CUR_SECTION:[=!'

set 'CUR_SECTION=!CUR_SECTION:]=!'

if '!CUR_SECTION!'=='!SECTION!' (

set 'IN_SECTION=true'

- 1 -

) else (

set 'IN_SECTION=false'

)

) else (

REM 不是[section]行,如果在要读取的section内,则判断是否是要读取的key

if '!IN_SECTION!'=='true' (

for /F 'tokens=1,* delims==' %%b in ('!LINE!') do (

set 'CUR_KEY=%%b'

set 'CUR_VALUE=%%c'

REM 去掉key和value的空格

set 'CUR_KEY=!CUR_KEY: =!'

set 'CUR_VALUE=!CUR_VALUE: =!'

if '!CUR_KEY!'=='!KEY!' (

echo !CUR_VALUE!

)

)

)

)

)

```

该函数将INI文件中`[Section1]`内`Key1`的值打印出来。

- 2 -

写入INI文件的函数:

```

setlocal EnableDelayedExpansion

set 'INI_FILE='

set 'SECTION=[Section1]'

set 'KEY=Key1'

set 'VALUE=Value1'

set 'TMP_FILE=%TEMP%%RANDOM%.tmp'

REM 复制INI文件到临时文件

copy '%INI_FILE%' '%TMP_FILE%' >nul

REM 替换文件中的键值

set 'REPLACED=false'

for /F 'usebackq delims=' %%a in ('%TMP_FILE%') do (

set 'LINE=%%a'

set 'CUR_SECTION=!LINE!'

set 'CUR_SECTION=!CUR_SECTION:[=!'

set 'CUR_SECTION=!CUR_SECTION:]=!'

if '!LINE:~0,1!'=='[' (

if '!CUR_SECTION!'=='!SECTION!' (

set 'IN_SECTION=true'

) else (

set 'IN_SECTION=false'

- 3 -

)

) else (

if '!IN_SECTION!'=='true' (

for /F 'tokens=1,* delims==' %%b in ('!LINE!') do (

set 'CUR_KEY=%%b'

set 'CUR_VALUE=%%c'

set 'CUR_KEY=!CUR_KEY: =!'

if '!CUR_KEY!'=='!KEY!' (

echo !KEY!=!VALUE!>>'%TMP_FILE%'

set 'REPLACED=true'

)

)

)

)

)

REM 如果没有替换成功,则在[section]下面插入新的key-value

if '!REPLACED!'=='false' (

echo.>>'%TMP_FILE%'

echo !SECTION!>>'%TMP_FILE%'

echo !KEY!=!VALUE!>>'%TMP_FILE%'

)

REM 将临时文件复制回INI文件

- 4 -

copy /y '%TMP_FILE%' '%INI_FILE%' >nul

del '%TMP_FILE%'

```

该函数将INI文件中`[Section1]`内的`Key1`的值替换为`Value1`,如果没有该键则在`[Section1]`下面插入新的键值对。

- 5 -


本文标签: 文件 函数 空格 读写 记录