批处理读取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的值

@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
时间: 2024-11-05 08:20:09

批处理读取ini文件的相关文章

C#读取ini文件的方法

最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.Specialized; using System.IO; using System.Runtime.InteropServices; using System.Windows.Forms; namespace test{ /

Linux下读取Ini文件类

Linux下读取Ini文件类 最近项目上有需要读取Ini文件 所谓Ini文件也就是文本文档 并且以 //注释1 /*注释2 [Section] Key1=aaa Key2=bbb 这种形式存在的文档 自己编写了一个类  比较使用 简单 可以跨平台读写INI文件 头文件Ini.h #include <map> #include <string> using namespace std; #define CONFIGLEN 256 enum INI_RES { INI_SUCCESS,

读取INI文件 - Delphi篇

程序经常需要读取一些用户设定值,怎么完成这个过程? B/S程序一般使用XML文件,而C/S程序则使用INI文件. 前篇<C#迁移之callXBFLibrary - 2(调用非托管DLL)>是C#读取INI的示例. 本篇介绍使用Delphi完成这个过程. 首先,引用单元. uses Windows, SysUtils, Classes, DB, ADODB, StrUtils, Forms, IniFiles; 其中"IniFiles"即是我们要引用的单元. 然后,定义类变量

QT仿照MFC读取INI文件(支持中文)

QT仿照MFC读取INI文件(支持中文) #include <QSettings> #include <QtGui> UINT SEGetPrivateProfileInt(LPCSTR lpAppName, LPCSTR lpKeyName,      INT nDefault, LPCSTR lpFileName) {     UINT nReturn = nDefault;     QString strDefault, strItem, strSection, strKey

bat 读取 ini 文件

bat 读取 ini 文件 参考链接:https://stackoverflow.com/questions/2866117/windows-batch-script-to-read-an-ini-file 这个 bat 支持 ini 的键值与=号之间存在空格,例如 key1 = value1 readini.bat: @if (@[email protected]) @end /* -- batch / JScript hybrid line to begin JScript comment

利用GetPrivateProfileString读取ini文件的字段

//INIClass读取类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.IO; using UnityEngine; namespace cReadConfigFile { public class INIClass { public string inipath; [

C++ 读取INI文件

Windows操作系统专门为此提供了6个API函数来对配置设置文件进行读.写: GetPrivateProfileInt() 从私有初始化文件获取整型数值GetPrivateProfileString() 从私有初始化文件获取字符串型值GetProfileInt 从win.ini 获取整数值GetProfileString 从win.ini 获取字符串值WritePrivateProfileString 写字符串到私有初始化文件WriteProfileString 写字符串到win.ini 我们

vs读取ini文件

读取string类型: DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName); 其中个参数的意思: LPCTSTR lpAppName ------- INI文件中的一个字段名 LPCTSTR lpKeyName -------- lpAppName 下的一个键名,也就是里面具

读取INI文件插件

GetPrivateProfile.inc 1 /** 2 * AMXX INI 读取模块 3 * 兵联互创|展鸿 编写 4 * 时间 2015-1-12 5 */ 6 7 enum SUIC_DATA 8 { 9 SUIC_STRING = 1, 10 SUIC_INT, 11 SUIC_FLOAT, 12 SUIC_ARRAY_FLOAT, 13 SUIC_ARRAY_INT 14 } 15 16 /** 17 * @说明: 读INI文件 18 * @参数: lpApplicationNam