Board logo

标题: [求助]如何截取文本里指定位置的指定内容?(已解决) [打印本页]

作者: rongcong005     时间: 2008-6-25 20:57    标题: [求助]如何截取文本里指定位置的指定内容?(已解决)

有一文本a.ini,如下:
[test]
files=F:\soft\test\sky.exe
运行模式=0,1,1,0,0,0,0,0,0806232101,
ico=F:\soft\test\sky.exe

第二行里的“运行模式=0,1,1,0,0,0,0,0,”里除了位数不变,数值是有可能变化的,比如有可能是“运行模式=0,1,1,0,0,0,0,1,”或“运行模式=0,1,1,0,0,1,0,0,”

现在我想要读取第三行“运行模式=0,1,1,0,0,0,0,0,”后面的“0806232101”(这个数值和长度不定,并且后面的逗号不要),并把它写入另一个文本b.txt去,要怎样写?

批处理实在是菜,希望各位大虾能帮我。。。。。。
谢谢!!

[ Last edited by rongcong005 on 2008-6-26 at 06:19 PM ]
作者: lxmxn     时间: 2008-6-26 00:17

@echo off
for /f "tokens=1* delims==" %%a in (a.ini) do (
    if "%%a"=="运行模式" set dest=%%b
)

for %%a in (%dest:,= %) do set wanted=%%a
echo.%wanted%>b.ini
start notepad b.ini
思路:
  1、以=号为分隔符,读取a.ini文件的每一行,如果第一列为“运行模式”,则将变量dest的值赋值为“这一行第二列及其以后的所有列的内容”;
  2、用空格替换掉%dest%值中的逗号,用for提取最后一个元素,赋值给wanted变量;
  3、写变量wanted的值到文件b.ini中去,并用记事本打开它。
作者: Climbing     时间: 2008-6-26 10:27
直接type a.ini | find "运行模式"就可以提取出需要的行。

不过上面lxmxn的提取wanted的步骤似乎是错误的,没看清题意。
@echo off
for /f "usebackq tokens=9 delims=," %%i in (`type a.ini ^| find "运行模式"`) do set wanted=%%a
echo %wanted%>b.txt
notepad b.txt

作者: qzwqzw     时间: 2008-6-26 14:26

@echo off
for /f %%s in ('find "运行模式" ^<a.ini') do for %%t in (%%s) do set wanted=%%t
echo.%wanted%

作者: Climbing     时间: 2008-6-26 14:33
呵呵,看来还是我学东西太机械,受教了。
作者: rongcong005     时间: 2008-6-26 18:18
谢谢几位的热心,问题已经解决。
批处理真是博大精深,要学的东西实在太多了。。。。。。
谢谢!!
作者: lxmxn     时间: 2008-6-27 05:04


  Quote:
Originally posted by Climbing at 2008-6-26 10:27:
直接type a.ini | find "运行模式"就可以提取出需要的行。

不过上面lxmxn的提取wanted的步骤似乎是错误的,没看清题意。

我觉得应该是对的,兄说的“步骤错了”具体是指……?
作者: Climbing     时间: 2008-6-27 07:48


  Quote:
Originally posted by lxmxn at 2008-6-27 05:04:


我觉得应该是对的,兄说的“步骤错了”具体是指……?

是我错了。