| 
 
sglxy 
中级用户
 
    MS-DOS爱好者
  
 
积分 397 
发帖 87 
注册 2002-12-15 
状态 离线
 | 
『楼 主』:
 如何用批处理读取.ini文件的一个值,并将其设为变量?
 
使用 LLM 解释/回答一下
  
如题,如何用批处理读取.ini文件的一个值,并将其设为变量使用? 
我这个疑问已经好久了,一直没有找到合适的方法。请各位朋友指点迷津。谢谢!其文本文件(.ini)内容如下: 
 
....... 
...... 
..... 
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 
状态 离线
 | 
 | 
  2008-1-28 11:02 | 
  
 | 
 | 
 
junchen2 
高级用户
 
    
 
  
  
积分 537 
发帖 219 
注册 2007-8-4 来自 杭州--半山 
状态 离线
 | 
 | 
  2008-1-28 11:34 | 
  
 | 
 | 
 
sglxy 
中级用户
 
    MS-DOS爱好者
  
 
积分 397 
发帖 87 
注册 2002-12-15 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
谢谢楼上的两位朋友,我第二条关于Find的问题搞明白了,原来是我将Find命令没整清楚。谢谢了! 
      第一条关于用FOR命令直接读出该位置字符串,并设置为变量的方法如何做,请朋友们再提示一下,谢谢。 
 
    
 
  
 |   
 | 
  2008-1-28 18:40 | 
  
 | 
 | 
 
chenall 
银牌会员
 
     
 
  
 
积分 1276 
发帖 469 
注册 2002-12-23 来自 福建泉州 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
多查找一下论坛之前的贴子,有类似的. 
 
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 楼』:
 
 
使用 LLM 解释/回答一下
  
谢谢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 楼』:
 
 
使用 LLM 解释/回答一下
  
不要随便更改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 楼』:
 
 
使用 LLM 解释/回答一下
  
如果你的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 楼』:
 
 
使用 LLM 解释/回答一下
  
谢谢3742668 和 exzzz朋友的热心帮助,尤其是exzzz朋友的批处理文件我看后更是受益非浅。希望以后还能得到你的指点,再次感谢。 
 
 Last edited by sglxy on 2008-2-3 at 06:35 PM ] 
 
    
 
  
 |   
 | 
  2008-2-3 18:27 | 
  
 | 
 | 
 
qq43142691 
中级用户
 
   
 
  
  
积分 326 
发帖 152 
注册 2007-5-4 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
 
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 | 
  
 |