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
Originally posted by Climbing at 2008-6-26 10:27: 直接type a.ini | find "运行模式"就可以提取出需要的行。 不过上面lxmxn的提取wanted的步骤似乎是错误的,没看清题意。
我觉得应该是对的,兄说的“步骤错了”具体是指……?

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