Board logo

标题: 我自己写的 ini/资源文件读取 [打印本页]

作者: knoppix7     时间: 2008-3-10 20:23    标题: 我自己写的 ini/资源文件读取

代码不是太好。见谅.未作完整的除虫.
@echo off %{BY knoppix7@www.cndos.net}%
::%1 =>INI文件路径
::%2 =>段名 不用加[]
::%3 =>变量名
::%3为空则读出整段内容
::Command =>模式(如 SET/ECHO) {set:设置为变量 echo:显示 },不能为空
::YH =>设置是否使用引号YH="则加引号 YH不存在则不加
::变量延迟必须在父BAT中被打开
if NOT EXIST "%~1" (Echo File Not Found&GOTO :EOF)
if "%~2"==""  GOTO :EOF
for /F "eol=; tokens=1 delims=:" %%i IN ('findstr /I /n /c:"[%~2]" "%~1" ^| Findstr /v ";" ') DO (
        SET line=%%i
)
if "%line%"=="" (echo Section Not Found&GOTO :EOF)
FOR /f "eol=; tokens=1* skip=%line% delims=" %%i IN ('type "%~1"') DO (
        set "temp_1=%%i"
        if "!temp_1:~0,1!"=="[" (GOTO :EOF) ELSE (
                IF "%~3"=="" (%command% %YH%%%i%YH%) ELSE (
                        FOR /F "tokens=1 delims==" %%a IN ("%%i") DO (
                                if /i "%%a"=="%~3" (%command% %YH%%%i%YH%)
                        )
                )
        )
)
set YH=
set line=
set temp_1=
作为子BAT调用的时候请不要再这个BAT里加setlocal ENABLEDELAYEDEXPANSION
因为这样的话.这个BAT执行完就会把变量还原了,白读了.

用途:
方便设定/显示ini内容(看command设置了)
捆绑资源.("command=>>XX.txt echo "的时候就是输出文件了)
     以前用more/type 捆绑vbs文件,一个BAT只能捆绑一个.写成资源就随便了(看示例)
代码只是骨架,其他功能请自己开发把.

示例:
@echo off&setlocal ENABLEDELAYEDEXPANSION
set YH="
set command=set
echo 设置变量
call inifile.bat "%~0" 设置变量
set words
pause
echo 显示内容
set YH=
set command=echo
call inifile.bat "%~0" 显示内容
pause
echo 输出文件
set YH=
set "command=>>test.bat echo"
call inifile.bat "%~0" 输出文件
call test.bat
pause
del test.bat
GOTO :EOF

[设置变量]
words=welcome to cn-dos
[显示内容]
welcome to cn-dos
[输出文件]
@echo off
echo output as "%~f0"
echo welcome to cn-dos
pause

[ Last edited by knoppix7 on 2008-3-10 at 08:25 PM ]
作者: HAT     时间: 2008-3-11 14:58
无奈何版主的batch2ubb里面有一段读取ini文件的代码,写的挺好的。