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文件的代码,写的挺好的。