@echo off >temp.ini
call :Begin "%~1" "%~2" "%~3" "%~4"
:TrimLeft
set "var=%~1"
if "%var:~0,1%"==" " call :TrimLeft "%var:~1%"
goto :eof
:TrimRight
set "var=%~1"
if "%var:~-1%"==" " call :TrimRight "%var:~0,-1%"
goto :eof
:Trim
call :TrimLeft "%%~1%"
call :TrimRight "%var%"
goto :eof
:Begin
set "filePath=%~1"
call :Trim "%filePath%"
set "filePath=%var%"
set "section=%~2"
call :Trim "%section%"
set "section=[%var%]"
set "Key=%~3"
call :Trim "%Key%"
set "Key=%var%"
set "Val=%~4"
call :Trim "%Val%"
set "Val=%var%"
@echo off >tmp.ini
setlocal EnableDelayedExpansion
set /a flag=0
rem token表示分配的字符串取前2个,按%%i自加,delims==表示以=分隔,skip表示跳过指定行数
for /f "usebackq tokens=1* delims== " %%i in (`type %filepath%`) do (
set "KeyDst=%%i"
call :Trim "!KeyDst!"
set "KeyDst=!var!"
if "!var:~0,1!"=="[" (
echo.>>tmp.ini
echo %%i>>tmp.ini
echo %%i|find "%section%">nul&&set /a flag=1) else (
if !flag!==1 (
if "!KeyDst!"=="%Key%" (
echo %key%=%Val%>>tmp.ini
set /a flag=0
) else (
if %%j=="" (
echo %%i>>tmp.ini
) else echo %%i=%%j>>tmp.ini
) else (
if defined %%j (
echo %%i>>tmp.ini
) else echo %%i=%%j>>tmp.ini
copy tmp.ini %filepath% /y >nul||(attrib -s -a -r -h %filepath%& copy tmp.ini %filepath% /y >nul)
del tmp.ini
echo finish
goto :eof
1. 简介批处理并没有直接读写ini文件的功能。所以只能通过读取文件内容分析比较来找到相应段名、键名对应位置,然后提取相应字符串来做为读。写则是找到键名对应的内容,然后进行替换,重新新的文件然后覆盖原文件。2. 读取2.1. 前期处理要求输出的参数有配置文件路径、段名、键名。并且这3个字符串都需要进行Trim处理,即消除字符串前后可能存在的空格,提升代码的兼容性与可靠性。代码中用了3个代...
:: 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的值
set /p Server_IP_FTP=请输入FTP服务器IP(帮助:/h):
set Server_IP_FTP=%Server_IP_FTP%
if /i "%Server_IP_FTP%"=="/h" cls & echo FTP服务器格式:1.2.3.4 & goto set_IP
if "%Server_IP_FTP%"=="" cls & echo 请重新输入 & goto set_IP
windows bat 读取 ini 配置文件
参考链接:https://stackoverflow.com/questions/2866117/windows-batch-script-to-read-an-ini-file
这个 bat 支持 ini 的键值与=号之间存在空格,例如 key1 = value1
readini.bat
@if (@a==@b) @end /* -- batch / JScript hybrid line to begin JScript comment
:: -----
echo config:%CONFIG_FILE_PARAM%
for /f "usebackq skip=1 tokens=1,2 delims==" %%a in (%CONFIG_FILE_PARAM%) do (
@rem if %2==%%a set %3=%%b& @echo ReadConfig: %%a=%%b
@echo off >tmp.ini<br />
set IniFn=<br />
::在等号后面写上ini的文件名,如:set IniFn=configip.ini<br />
for /f "tokens=1* delims=:" %%i in ('findstr /n ".*" c:/Windows/%IniFn%') do (<br />
if "%%j"=="" (echo.>>tmp.ini) else (<br />
1.linux下INI配置文件读写操作库
========================================================================
if(false)
SET(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER "/home/swapp/arm/5.4.0/bin/arm-linux-gcc")
set(CMAKE_CXX_COMPILER "/home/swapp/arm/5.4.0/bin/arm-linux-g++")
else()
SET(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER "/usr/bin/gcc")
set(CMAKE_CXX_COMPILER "/usr/bin/g++")
endif()
========================================================================
编译linux:
修改CMakeLists.txt里上面代码,使用/usr/bin/gcc编译
1. mkdir linux_build
2. cd linux_build
3. cmake ..
4. make
编译arm:
修改CMakeLists.txt里上面代码,使用arm-linux-gcc编译,这里选择您arm编译器的绝对路径
1. mkdir arm_build
2. cd arm_build
3. cmake ..
4. make
纯c读写ini配置文件
用c/c++读写ini配置文件有不少第三方的开源库,如iniparser、libini、rwini、UltraLightINIParser等,但都不理想,往往代码较大、功能较弱、
接口使用不方便。尤其在大小写处理、前后空格、各种注释、跨平台换行符支持、带引号字符串处理、无section操作、原格式保持等方面存在问题。
现将本人精心制作的ini读写程序源码奉献给大家,纯c编写,简洁好用。支持windows和linux。
主要特点:
1、支持;和#注释符号,支持行尾注释。
2、支持带引号'或"成对匹配的字符串,提取时自动去引号。引号中可带其它引号或;#注释符。
3、支持无section或空section(名称为空)。
4、支持10、16、8进制数,0x开头为16进制数,0开头为8进制。
5、支持section、key或=号前后带空格。
6、支持\n、\r、\r\n或\n\r换行格式。
7、不区分section、key大小写,但写入时以新串为准,并保持其大小写。
8、新增数据时,若section存在则在该节最后一个有效数据后添加,否则在文件尾部添加。
9、支持指定key所在整行删除,即删除该键值,包括注释。
10、可自动跳过格式错误行,修改时仍然保留。
11、修改时保留原注释:包括整行注释、行尾注释(包括前面空格)。
12、修改时保留原空行。以上三点主要是尽量保留原格式。
不足之处:
1、不支持单key多value(逗号分割),只能一次性提取后自行处理。
2、不支持同名重复section和key。(重复section可视为错误,重复key则可能造成分歧)
3、不能提取所有section或key名称。
使用只需两个文件inirw.h、inirw.c,另有测试程序和工程文件,支持windows和linux。
批处理是Windows自带的一个脚本引擎,语法简洁、内置一些功能强大的命令,并且可以与Windows上的其他软件进行良好的通信。批处理能够提供一系统自动化处理功能,大幅提高日常工作中的一些琐碎重复事情的效率。
1. 概念
批处理(Batch),顾名思义即是指批量处理。批处理是基于dos命令行,Windows默认内置解释器cmd.exe的脚本语言。批处理文件默认保存为.bat或.cmd。
批处理是基于Dos命令行,所以批处理是没有GUI的,是运行在命令提示符终端(Command Prompt Termina
set KEY=key_name
for /f "tokens=2 delims==" %%a in ('type "%INI_FILE%" ^| findstr /i /c:"[%SECTION%]" /c:"%KEY%"') do (
set VALUE=%%a
echo %VALUE%
其中,您需要将 `path\to\your\ini\file.ini` 替换为您的INI文件的路径,`section_name` 替换为您要获取的节的名称,`key_name` 替换为您要获取的键的名称。
此命令将读取INI文件中指定节和键的值,并将其存储在 `VALUE` 变量中。最后,它将输出 `VALUE` 变量的值。