用来读取ini文件的批处理脚本

发布时间:2020-01-31编辑:脚本学堂
本文为大家介绍一个可以读取ini的批处理脚本,个人觉得批处理读取类似ini这样的配置文件,比较适用于系统运维中的统一登录,把用户名与密码保存在配置文件中,然后逐个读取。

本文为大家介绍一个可以读取ini的批处理脚本,个人觉得批处理读取类似ini这样的配置文件,比较适用于系统运维中的统一登录,把用户名与密码保存在配置文件中,然后逐个读取。
有需要的朋友可以参考下。

使用方法:
inifile iniFilePath [section] [item]

例子:
 

复制代码 代码如下:

inifile c:boot.ini
读取c:boot.ini的所有[section]

inifile c:boot.ini "[boot loader]"
读取c:boot.ini [boot loader]段的内容

inifile c:boot.ini "[boot loader]" timeout
显示c:boot.ini [boot loader]段 timeout的值

读取ini文件属性,脚本如下所示:
 

复制代码 代码如下:

@echo off
set item=
set filepath=
set section=
setlocal EnableDelayedExpansion
if not "%~1"=="" (
        set filepath=%1
) else goto :file_err
if not exist %filepath% goto :file_err
if not "%~2"=="" (
        set section=%2
        if "!section:~0,1!"==""^" set section=!section:~1!
        if "!section:~-1!"==""^" set section=!section:~0,-1!
) else goto :section
if not "%~3"=="" (
        set item=%3
        if "!item:~0,1!"==""^" set item=!item:~1!
        if "!item:~-1!"==""^" set item=!item:~0,-1!
)
setlocal disabledelayedExpansion
set 字段开始=
for /f "usebackq delims=[]" %%i in (`find /i "%section%" /n %filepath%`) do set 字段开始=%%i
for /f "usebackq tokens=1* delims== skip=%字段开始%" %%i in (`type %filepath%`) do (
        set a=%%i
        setlocal EnableDelayedExpansion
        if "!a:~0,1!"=="[" goto :eof
        if not "!a:~0,1!"==";" (
                setlocal disableDelayedExpansion
                for /f "delims=;" %%x in ("%%i=%%j") do (
                        if not DEFINED item (echo %%x) else (if /i "%%i"=="%item%" echo %%x)
                )
        )
)
goto :eof

:section
setlocal disableDelayedExpansion
for /f "usebackq delims== skip=2" %%i in (`find /i "[" %filepath%`) do echo %%i
goto :eof

:file_err
setlocal disableDelayedExpansion
echo.
echo %1文件未找到或未输入!
echo.
goto :eof