批處理讀取ini配置文件

批處理功能很強的,下面我寫了一個可以讀取ini配置文件的腳本

--------------------------------readini.bat---------------------------------------------

rem @echo off & setlocal enabledelayedexpansion
rem echo 參數個數: %0 %1 %2 %3
set name=
set namelist=
set param=
set paramlist=
FOR /F "eol=; tokens=1* usebackq delims==" %%i IN (%1) do (
    rem echo %%i %%j
    set p=%%i
    rem echo p=!p!
    rem echo 取字符!p! !p:~0,1!  !p:~-1!  !p:~1,-1!
    if "!p:~0,1!"=="[" (
        if "!p:~-1!"=="]" (
            rem @echo 條件!p:~1,-1!
            set name=!p:~1,-1!
        )        
    )
    rem echo name=!name! namelist=!namelist! paramlist=!paramlist! 輸入 %2
    if ""=="%2" (
        rem echo namelist=!namelist!  %%i
        if !namelist! EQU "" (
            if "!p:~1,-1!" NEQ "" (
                rem echo 步驟1 !namelist!
                set namelist=!p:~1,-1!
            )
        ) else (
            if "!p:~1,-1!" NEQ "" (
                rem echo 步驟2 uuuu!namelist!uuuu
                set namelist=!namelist!,!p:~1,-1!
            )
        )
    ) else if "!name!"=="%2" (
        if "%3"=="" (
            if "[!name!]" NEQ "%%i" (
                if "!paramlist!"=="" (
                    set paramlist=%%i
                ) else (
                    set paramlist=!paramlist!,%%i
                    rem echo  得到屬性 %%i %%j
                )
           )
      ) else (
          if "%%i" == "%3" (
              set param=%%j
          )
      )
  )
)
    rem echo ------------------------
    rem echo name=!name!
if "%2" EQU "" (
    rem 名稱列表
    echo "!namelist:~1!"
) else (
    if "%3" EQU "" (
        rem 屬性列表
        echo "!paramlist!"
    ) else (
        rem 屬性值
echo "!param!"
    )
)
rem @echo on

----------------------------------------------------------------------------------------

-------------------------------1.ini---------------------------------------------

;測試用ini文件
;注意 名稱中不能有等號和空格
;     屬性和等號之間不能有空格
[abc]
cd=oop
me= kke =d f
[bbb]
cd=wsd
me=
----------------------------------------------------------------------------------

---------------------調用方法test.bat----------------------------------------

@echo off & setlocal enabledelayedexpansion
echo ----readini 1.ini----
call readini 1.ini
echo ----readini 1.ini abc----
call readini 1.ini abc
echo ----readini 1.ini abc me----
call readini 1.ini abc me
@echo on
pause

-----------------------------------------------------------------------------------
運行效果



發佈了37 篇原創文章 · 獲贊 32 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章