中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何读取文本每一行中的指定字符串?
作者:
标题: [已结]如何读取文本每一行中的指定字符串? 上一主题 | 下一主题
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『楼 主』:  [已结]如何读取文本每一行中的指定字符串?

d:\mp3.txt DATA("CLUB慢摇","http://www.xxx.cn/dj/慢摇舞曲/CLUB慢摇.mp3"); DATA("包房专用经典Club慢摇串烧","http://www.xxx.cn/dj/包房专用经典Club慢摇串烧.mp3"); DATA("MC龍魔猪9月激情开场","http://www.xxx.cn/dj/MC龍魔猪9月激情开场.mp3"); DATA("aaaaa","http://www.xxx.cn/dj/aaaaa.mp3"); ..................................................................... ..................................................................... 无数这样格式的行 现在我想提取并输出每行中的http://www.xxx.cn/dj/aaaaa.mp3链接地址到d:\address.txt 批处理:
@echo off
set/p var=<d:\mp3.txt
for /f "tokens=4" %%a in ("%var:"= %") do echo %%a >d:\address.txt
pause>nul
查看address.txt,只被输出第一行内容: www.xxx.cn/dj/慢摇舞曲/CLUB慢摇.mp3 何故?我想要的是mp3.txt中每行的链接地址。 新手,麻烦大家帮帮忙。 谢谢10楼的朋友,问题解决。 [ Last edited by HAT on 2008-12-6 at 11:56 ]


2008-12-6 09:11
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
radem
高级用户

CMD感染者


积分 691
发帖 383
注册 2008-5-23
状态 离线
『第 2 楼』:  

开启延时




2008-12-6 09:14
查看资料  发短消息  网志   编辑帖子  回复  引用回复
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『第 3 楼』:  

不明白,我是新手,能说明白一点吗?


2008-12-6 09:16
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『第 4 楼』:  

搜索了一下论坛,改进后还是不行 @echo off & setlocal EnableDelayedExpansion set/p var=<d:\mp3.txt for /f "tokens=4" %%a in ("%var:"= %") do ( echo %%a >d:\address.txt set /a n+=1 & if !n!==234 goto out ) pause>nul :out echo.输出完成 pause


2008-12-6 09:32
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 5 楼』:  

@for /f "delims=,) tokens=2" %%a in (d:\mp3.txt) do @>>d:\address.txt echo %%~a
[ Last edited by tireless on 2008-12-6 at 09:48 ]


2008-12-6 09:46
查看资料  发短消息  网志   编辑帖子  回复  引用回复
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『第 6 楼』:  

上面朋友的不适合我用啊,文本每行有多个),不能以此作为分隔符,读取到的是不完整的片段 www.wodedj.cn/588djm ...剩下1天改地址 DJ小维再次全力打造包房专用经典Club慢摇串烧" www.wodedj.cn/588djm ...剩下1天改地址


2008-12-6 10:06
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 7 楼』:  

5 楼的代码处理 1 楼贴出的格式是没问题的。 能否把示例贴得完整些?


2008-12-6 10:25
查看资料  发短消息  网志   编辑帖子  回复  引用回复
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『第 8 楼』:  

MP3.TXT完整内容补到一楼


2008-12-6 10:39
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『第 9 楼』:  

我的意思是想以“作为分割符号,取第四段。


2008-12-6 10:42
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 10 楼』:  

@echo off
for /f "delims=, tokens=1,*" %%a in (d:\mp3.txt) do (
  set str=%%~b
  >>d:\address.txt call echo.%%str:");=%%
)


   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-12-6 11:54


2008-12-6 11:03
查看资料  发短消息  网志   编辑帖子  回复  引用回复
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『第 11 楼』:  

先谢了,测试通过,研究一下


2008-12-6 11:08
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『第 12 楼』:  

@echo off for /f "delims=, tokens=1,*" %%a in (d:\mp3.txt) do ( set str=%%~b >>d:\address.txt call echo.%%str:");=%% ) 对d:\mp3.txt中每一行的内容以,作为分割符,取第1列给 %%a ,其后的列都给 %%b,得到%%b的值为:www.xxx.cn/dj/aaaaa.xxx");去除");并输出到address.txt文本中。 理解了思路,但还想把CODE中几个我认为比较特殊的地方弄明白。 set str=%%~b 那个~是什么意思? call echo.%%str:");=%%是去除");的,可是我吧这句删了就不能运行了,为什么? 。。。学习


2008-12-6 11:31
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 13 楼』:  

那个~是什么意思?
另外,FOR 变量参照的替换已被增强。您现在可以使用下列 选项语法: ~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串 可以组合修饰符来得到多重结果: %~dpI - 仅将 %I 扩充到一个驱动器号和路径 %~nxI - 仅将 %I 扩充到一个文件名和扩展名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个驱动器号和路径。 %~ftzaI - 将 %I 扩充到类似输出线路的 DIR 在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名 比较易读,而且避免与不分大小写的组合键混淆。
call echo.%%str:");=%%是去除");的,可是我吧这句删了就不能运行了,为什么?
去掉会提示“命令语法不正确。”。


2008-12-6 11:42
查看资料  发短消息  网志   编辑帖子  回复  引用回复
15935643331
初级用户





积分 42
发帖 37
注册 2008-12-5
状态 离线
『第 14 楼』:  

完全明白了,谢谢!! >>d:\address.txt call echo.%%str:");=%% 这句是完整的一句,去除指定字符后输出到address.txt 。


2008-12-6 11:51
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: