中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用批处理读取.ini文件的一个值,并将其设为变量?
作者:
标题: 如何用批处理读取.ini文件的一个值,并将其设为变量? 上一主题 | 下一主题
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『楼 主』:  如何用批处理读取.ini文件的一个值,并将其设为变量?

如题,如何用批处理读取.ini文件的一个值,并将其设为变量使用?
我这个疑问已经好久了,一直没有找到合适的方法。请各位朋友指点迷津。谢谢!其文本文件(.ini)内容如下:
[LanQQ(V3.1)]
.......
......
.....
ISTIPOPENFILEDLG=1
ISAUTO=0
HOTKEY_GETMSG=2|112
SOUND_ISOPEN=1
NICKNAME=张 三
PATH=D:\飞鸽传书(懒QQ版)2.0\LanQQ\
LASTSAVE_PATH=

**********************
1、如果我需要在一个批处理中读取这个文件,并将其中的

“NICKNAME=张 三”  字段读出并设为:  set NICKNAME=张 三

另外:    将“PATH=D:\飞鸽传书(懒QQ版)2.0\LanQQ\”字段读出设为:set LanQQ=D:\飞鸽传书(懒QQ版)2.0\LanQQ\

用FOR /F 命令该如何实现?

2、我用 type config.ini|find "NICKNAME=" /V /i> tmp.txt 命令得到的tmp.txt文本中没有包含“NICKNAME" 这行的内容,那用find命令如何才能在tmp.txt中只得到“NICKNAME=张 三” 这行字符,而没有其他内容呢?

以上疑问请朋友们给予指点,先谢谢了!

[ Last edited by sglxy on 2008-1-28 at 06:35 PM ]

2008-1-28 07:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 2 楼』:  

/V
看看 find/? -_-|||



2008-1-28 11:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 3 楼』:  

findstr "NICKNAME=" config.ini

2008-1-28 11:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『第 4 楼』:  

谢谢楼上的两位朋友,我第二条关于Find的问题搞明白了,原来是我将Find命令没整清楚。谢谢了!
      第一条关于用FOR命令直接读出该位置字符串,并设置为变量的方法如何做,请朋友们再提示一下,谢谢。

2008-1-28 18:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 5 楼』:  

多查找一下论坛之前的贴子,有类似的.

for /f "usebackq tokens=1* delims==" %%i in (`findstr /i "NICKNAME" config.ini`) do set "NICKNAME=%%j"



QQ:366840202
http://chenall.net
2008-1-29 01:10
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『第 6 楼』:  

谢谢chenall朋友,但是这个命令行没有起作用,我只是将它稍微改了一下:
for /f "usebackq tokens=1* delims==" %%i in ('findstr /i "NICKNAME" config.ini') do echo.%%j>NAME.txt
请帮我看看那块不对了?谢谢!

2008-1-31 23:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 7 楼』:  

不要随便更改path变量的值,可能导致某些外部命令无法正常执行。
@echo off
    set NewPath=%path%
    for /f "delims=" %%i in (test.txt) do set "%%i">nul 2>nul
    echo NICKNAME=%NICKNAME%
    echo path=%path%
    set path=%NewPath%
    pause
goto :eof


2008-1-31 23:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
exzzz
初级用户

游手好闲 + 无所事事 ..



积分 194
发帖 167
注册 2007-4-30
状态 离线
『第 8 楼』:  

如果你的CONFIG.INI中每一行都是很标准的  XX = YY的样子,干脆简单点

for /f "delims==" %%a in (config.ini) do set %%a

避免使用一些系统自带的变量,你可以在cmd下输入set查看哪些是系统自带变量.

如果说是搜寻指定的字符,并set,可以这样
for /f "delims==" %%a in (findstr "变量名" config.ini) do set 变量名=%%a
然后你set就可以看到一个名字为 "变量名" 的变量了.

需要的话,我可以吧我最近几天写的一个批处理给你看看,
是用来修改   IP\掩码\网关\DNS\计算机名\计算机描述的东西,

因为我是帮中移动做维护的,所以分门别类的有一些PC要设置参数.就自己写了一个

里面还附带了一个批处理,是用来根据本机配置生成模板ini文件的,用起来还可以,你可以自行修改参数实验一下

http://exzzz.ik8.com/mybat.rar
以上链接一周内一有效

2008-2-1 15:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
exzzz
初级用户

游手好闲 + 无所事事 ..



积分 194
发帖 167
注册 2007-4-30
状态 离线
『第 9 楼』:  

如果有什么需要交流的,可以 email给我,我少有时间上论坛的
exzzz@163.com

2008-2-1 15:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『第 10 楼』:  

谢谢3742668 和 exzzz朋友的热心帮助,尤其是exzzz朋友的批处理文件我看后更是受益非浅。希望以后还能得到你的指点,再次感谢。

[ Last edited by sglxy on 2008-2-3 at 06:35 PM ]

2008-2-3 18:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qq43142691
中级用户





积分 327
发帖 152
注册 2007-5-4
状态 离线
『第 11 楼』:  


set LiNo=1
set "Bin="
set/a LiNo-=1
for /f "delims=" %%a in ('more/e +%LiNo% ^< "%配置文件%"') do (
  if not defined Bin set "Bin=%%a"
)
set %Bin%
ini内容为
ftpbakname=批处理备份

2008-2-3 22:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: