中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-27 05:52
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何截取文本里指定位置的指定内容?(已解决) 查看 1,512 回复 7
楼 主 [求助]如何截取文本里指定位置的指定内容?(已解决) 发表于 2008-06-25 20:57 ·  中国 广西 桂林 电信
初级用户
积分 38
发帖 15
注册 2008-03-07 12:48
18年会员
UID 112277
性别 男
状态 离线
有一文本a.ini,如下:

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 ]
2 发表于 2008-06-26 00:17 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
@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中去,并用记事本打开它。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
Climbing +25 2008-06-26 14:34
3 发表于 2008-06-26 10:27 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
直接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
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
4 发表于 2008-06-26 14:26 ·  中国 江西 南昌 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线

@echo off
for /f %%s in ('find "运行模式" ^<a.ini') do for %%t in (%%s) do set wanted=%%t
echo.%wanted%
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
Climbing +25 2008-06-26 14:34
5 发表于 2008-06-26 14:33 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
呵呵,看来还是我学东西太机械,受教了。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
6 发表于 2008-06-26 18:18 ·  中国 广西 桂林 电信
初级用户
积分 38
发帖 15
注册 2008-03-07 12:48
18年会员
UID 112277
性别 男
状态 离线
谢谢几位的热心,问题已经解决。
批处理真是博大精深,要学的东西实在太多了。。。。。。
谢谢!!
7 发表于 2008-06-27 05:04 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
Originally posted by Climbing at 2008-6-26 10:27:
直接type a.ini | find "运行模式"就可以提取出需要的行。

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


我觉得应该是对的,兄说的“步骤错了”具体是指……?
8 发表于 2008-06-27 07:48 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
Originally posted by lxmxn at 2008-6-27 05:04:


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


是我错了。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
论坛跳转: