批處理功能很強的,下面我寫了一個可以讀取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
-----------------------------------------------------------------------------------
運行效果