|
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 |
|
|
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
状态 离线
|
|
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 |
|