![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 17:36 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » bat读取ini文件 |
| 可打印版本 1,471 / 0 |
| 第1楼 blacksheep2000 | 发表于 2009-11-11 10:01 |
| 新手上路 发帖 1 积分 1 | |
|
bat读取ini文件 对chanell编写的脚本进行改良
@echo off goto start :usage @echo :::::::::INI文件读取 ::::::::::::::::::::::::::::::::::::::::::::: @echo ::使用方法: :: @echo :: inifile iniFilePath [section] [item] [Y] :: @echo ::例子: :: @echo :: inifile c:\boot.ini :: @echo :: 读取c:\boot.ini的所有[section] :: @echo :: inifile c:\boot.ini "[boot loader]" :: @echo :: 读取c:\boot.ini [boot loader]段的内容 :: @echo :: inifile c:\boot.ini "[boot loader]" timeout :: @echo :: 显示c:\boot.ini [boot loader]段 timeout的值 :: @echo :: inifile c:\boot.ini "[boot loader]" timeout y :: @echo :: 设置c:\boot.ini [boot loader]段 timeout为环境变量 :: @echo :: 返回值:100(文件不存在或未找到) :: @echo :: 返回值:1(查找的Item不存在) :: @echo :: 返回值:0(成功) :: @echo ::::::::::::2009-11-10:::::::::::::::::::::::::::::::::::::::::::: set succ_code=0 goto :eof :start set item_value= set succ_code=1 ::对第一个参数进行判断 if "%~1"=="" ( call :usage goto :exit ) if "%~1"=="/?" ( call :usage goto :exit ) SETLOCAL set setvar=0 if /i "%~4"=="Y" set setvar=1 ::初始化变量 set exit_code= set item= set filepath= set section= set inifile= if not "%~1"=="" ( set filepath=%1 ) else goto :file_err if not exist %filepath% goto :file_err if "%~2"=="" goto :section set "section=%~2" set "item=%~3" if "%item%"=="" set succ_code=0 call :获取数据 endlocal&set "item_value=%item_value%" & set succ_code=%succ_code% if defined item_value set %item_value% goto :exit :获取数据 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,2 skip=%字段开始% delims==;" %%i in (%filepath%) do ( call :分析数据 "%%i" "%%j" if defined exit_code exit /b %exit_code%&echo exit ) goto :eof :分析数据 set a=%~1 set b=%~2 call :trim a call :trim b ::如果获取到的第一个字符是"[",说明本节已经搜索完成。退出,返回0 if "%a:~0,1%"=="[" (set exit_code=0 & goto :eof ) if not Defined item ( ::find items in seciton echo %a%=%b% ) else ( ::find appointed item if /i "%a%"=="%item%" ( :: set exit_code=0 ::find the appointed item success set succ_code=0 if "%setvar%"=="1" ( ::set environment set item_value="%a%=%b%" ) else ( ::show item value echo %a%=%b% ) ) ) goto :eof :section for /f "eol=; usebackq delims=; skip=2" %%i in (`find /i "[" %filepath%`) do echo %%i set succ_code=0 goto :exit :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 :file_err echo %1文件未找到或未输入! exit /b 100 :exit exit /b %succ_code% |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |