中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何截取文本里指定位置的指定内容?(已解决)
作者:
标题: [求助]如何截取文本里指定位置的指定内容?(已解决) 上一主题 | 下一主题
rongcong005
初级用户





积分 38
发帖 15
注册 2008-3-7
状态 离线
『楼 主』:  [求助]如何截取文本里指定位置的指定内容?(已解决)

有一文本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 ]

2008-6-25 20:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


@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中去,并用记事本打开它。

   此帖被 +25 点积分         点击查看详情   
评分人:【 Climbing 分数: +25  时间:2008-6-26 14:34


2008-6-26 00:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 3 楼』:  

直接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




偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-26 10:27
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 4 楼』:  


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


   此帖被 +25 点积分         点击查看详情   
评分人:【 Climbing 分数: +25  时间:2008-6-26 14:34


2008-6-26 14:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 5 楼』:  

呵呵,看来还是我学东西太机械,受教了。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-26 14:33
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
rongcong005
初级用户





积分 38
发帖 15
注册 2008-3-7
状态 离线
『第 6 楼』:  

谢谢几位的热心,问题已经解决。
批处理真是博大精深,要学的东西实在太多了。。。。。。
谢谢!!

2008-6-26 18:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  



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

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

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

2008-6-27 05:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 8 楼』:  



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


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

是我错了。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-27 07:48
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复

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


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



论坛跳转: