您的位置:首页 > 其它

DOS批处理:读取配置文件,格式 与 程序,例子

2010-10-15 16:45 375 查看
能否让dos批处理程序读取配置文件,类似于ini文件?

本人摸索出一套可行的方案。程序及配置文件举例如下。

此文目的有二:为感兴趣的同学抛砖引玉;记录备查。



配置文件:

#配置文件,解析配置变量
#配置文件每个设置值一行
#可以以“#”添加注释行
#行为可以添加“#”注释
#文件的路径可以使绝对路径,也可以是相对路径。windows下,文件的路径必须用“/”而不是“/”表示
#######################################################
#通用配置
debug=1
#osql.exe连接字符串
osqlcnstr=-S127.0.0.1,21433-E-h-1-n-b-m15-w500
#bcp.exe连接字符串
bcpcnstr=-S127.0.0.1,21433-T-c
DBServer=(local)
Database=testdb
UID=testuser
PWD=testpwd
InputDataDir=./DATA
InputDataFile=CONTACTINFO.txt
DTSLogFile=CVT_USRINFO.log
#######################################################
批处理程序:

viewsource

print?

@echooff
set
debug=0
rem配置文件以“#”作为行、行尾注释符
rem配置项不能包含空格和双引号
rem配置值不能包含双引号
rem去除空行、注释行。注意不能去掉行开始含有空格的行。取%%b,舍弃%%b
echo.
echo环境变量配置如下:
for
/f
"eol=#tokens=*"
%%a
in
(%~n0.txt)
do
(
remecho.
if
%debug%==1echodebug1:a=%%a.b=%%b.
rem去除行尾注释。取%%m,舍弃%%n
for
/f
"delims=#tokens=1*"
%%m
in
(
"%%a"
)
do
(
if
%debug%==1echodebug2:m=%%m.n=%%n.
rem解析配置,去掉空行。取%%x,%%y,舍弃%%z
for
/f
"delims==tokens=1,2*"
%%x
in
(
"%%m"
)
do
(
if
%debug%==1echodebug3:x=%%x.y=%%y.
if
not
"%%y"
==
""
(
rem去掉配置项的空白字符。
for
/f%%k
in
(
"%%x"
)
do
(
rem去掉配置值的空白字符。
for
/f
"tokens=1*"
%%v
in
(
"%%y"
)
do
(
if
"%%w"
==
""
(
echo.%%k.=.%%v.
set
%%k=%%v
)
else
(
echo.%%k.=.%%v%%w.
set
%%k=%%v%%w
)
)
)
)
)
)
)
echo读取配置完毕.
echo.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐