联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off :::::::::INI文件读取 by chenall QQ:366840202:::::::::::::::::::::: ::使用方法: :: :: 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的值 :: ::07-04-26 新增设置变量的功能,只需将下面的setvar=0改为1即可 :: ::::::::::::::::::::::::::::::::::::::::::::2006-12-21:::::::::::: set setvar=0 ::当有指定[item]参娄并且setvar值为1时就将[item]的值设为变量[item] ::例子inifile c:\boot.ini "[boot loader]" timeout 就可以得到一个%timeout%的变量 set item= set filepath= set section= if not "%~1"=="" ( set filepath=%1 ) else goto :file_err if not exist %filepath% goto :file_err setlocal EnableDelayedExpansion 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! ) endlocal&set "item=%item%"&set "section=%section%" for /f "usebackq delims=[] skip=2" %%i in (`find /i "%section%" /n %filepath%`) do set 字段开始=%%i if "%字段开始%"=="" goto :eof for /f "eol=; usebackq tokens=1* skip=%字段开始% delims==" %%i in (`type %filepath%`) do ( set a=%%i setlocal EnableDelayedExpansion if "!a:~0,1!"=="[" (endlocal&goto :eof) endlocal for /f "delims=;" %%x in ("%%i=%%j") do ( if not DEFINED item (echo>>b.ini %%x) else ( setlocal EnableDelayedExpansion call :trim a if /i "!a!"=="%item%" ( if "%setvar%"=="1" ( endlocal&set "%%x" ) else ( endlocal&echo>>b.ini %%x ) ) ) ) ) goto :eof :section endlocal for /f "eol=; usebackq delims== skip=2" %%i in (`find /i "[" %filepath%`) do echo>>b.ini %%i goto :eof :trim if "!%1:~0,1!"==" " (set %1=!%1:~1!&&goto trim) if "!%1:~0,1!"==" " (set %1=!%1:~1!&&goto trim) if "!%1:~-1!"==" " (set %1=!%1:~0,-1!&&goto trim) if "!%1:~-1!"==" " (set %1=!%1:~0,-1!&&goto trim) goto :eof :show_item if not DEFINED item (echo>>b.ini %b%) else (if /i "%a%"=="%item%" echo>>b.ini %%x) goto :eof :file_err echo. echo %1文件未找到或未输入! echo. goto :eof
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Test>inifile c:\boot.ini "[boot loader]" C:\Test>type b.ini timeout=5 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS