中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于提取电影点击率的批处理
作者:
标题: 关于提取电影点击率的批处理 上一主题 | 下一主题
lisyofun
初级用户





积分 87
发帖 61
注册 2008-9-18
状态 离线
『楼 主』:  关于提取电影点击率的批处理

我想通过批处理来删除一些点击率过低的电影,在每个电影夹的文件下都有一个info.xml文件储存了电影点击率,加入时间等数据。其格式如下:
<?xml version="1.0" encoding="gb2312" ?><movie><item name="name"> <![CDATA[功夫无敌]]>  </item> <item name="type"><![CDATA[动作/喜剧]]>  </item> <item name="actor"> <![CDATA[吴建豪 樊少皇 黄伊汶 林子聪 梁小龙 陈国坤]]>  </item> <item name="where"> <![CDATA[中国香港]]>  </item> <item name="language"> <![CDATA[国语]]>  </item> <item name="long"> <![CDATA[104分钟]]>  </item> <item name="intro"> <![CDATA[<br>    民国年间,孤身来到上海的阿力(吴建豪 饰)意外卷入了一场惊心动魄的赌局,没想到却引发一连串的江湖杀戮,在腥风血雨之中,谱写出一段凄婉动人的故事。本片由台湾顶级人气偶像吴建豪担纲主演,周星驰《功夫》原班人马倾力打造。吴建豪本人更是一改他以往斯文帅哥形象,特别进行连串武术特训,坚持亲自出演所有动作场面。<br>]]>  </item>  <item name="img">海报.jpg</item>  <item name="click">208</item>  <item name="tjtime"></item>  <item name="addtime">2007-10-9 19:21:40</item>  <item name="standid">200705041049151082081399</item>  <item name="allowip"></item>  <item name="allowuser"></item>  <item name="nopaycansee"></item>  </movie>

用下面的批处理能提取出点击率:
@echo off
for /f %%a in ('dir /b /s /a "*.xml"') do (
for /f "tokens=29 delims=click" %%b in (%%a) do (
for /f "tokens=2 delims=><" %%c in ("%%b") do (
echo %%c
)))
pause

但是并不是每个都能提取出来,因为每个都一个info.xml都不尽相同。
比如下面这个,用同样的tokens就不能提取出来。
<?xml version="1.0" encoding="gb2312" ?><movie><item name="name"> <![CDATA[终极任务p78]]>  </item> <item name="type"><![CDATA[科幻/动作]]>  </item> <item name="actor"> <![CDATA[窛沙·库岑科 弗拉季米尔·弗多维琴科夫]]>  </item> <item name="where"> <![CDATA[俄罗斯]]>  </item> <item name="language"> <![CDATA[俄语]]>  </item> <item name="long"> <![CDATA[87分钟]]>  </item> <item name="intro"> <![CDATA[有史以来俄罗斯投资最大,最令人目眩神迷的科幻惊悚动作片!俄罗斯电影最大投资的动作影片,高达1000万美元的投资。完美的视觉效果,错综复杂的计算机谜团,令人目眩的打斗场面,以及英国流行摇滚组合Sneak Pimps亲自操刀创作的音乐,都使这部影片当仁不让的成为俄罗斯2007年度最值得期待的年度大片!<p>  故事发生在不久的将来。因为实验的事故引发了一种病毒,致使接触到这病毒的人都变成了僵尸,于是,一批特种部队进入这个实验室寻找解决问题的方法…… <br>  问题在于,这群曾经并肩战斗过的队员们彼此之间仍然存有种种过往和芥蒂,使他们的相处合作总是问题种种。于是,摆在他们面前的不仅是来自外界的莫测的危险,还有来自他们自己的内部危机…]]>  </item>  <item name="img">海报.jpg</item>  <item name="click">46</item>  <item name="tjtime"></item>  <item name="addtime">2007-10-9 19:21:44</item>  <item name="standid">200706211202270971970288</item>  <item name="allowip"></item>  <item name="allowuser"></item>  <item name="nopaycansee"></item>  </movie>

所以我想有什么办法能准确的把点击率提取出来。
请大家帮下忙.

2009-3-11 08:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 2 楼』:  

这么一大堆东西看着眼全花了
就没说点击率在哪




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-3-11 16:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 3 楼』:  

最好能传一个info.xml上来




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-3-11 16:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lisyofun
初级用户





积分 87
发帖 61
注册 2008-9-18
状态 离线
『第 4 楼』:  

把下面这个另存为info.xml就行了
<?xml version="1.0" encoding="gb2312" ?><movie><item name="name"> <![CDATA[功夫无敌]]>  </item> <item name="type"><![CDATA[动作/喜剧]]>  </item> <item name="actor"> <![CDATA[吴建豪 樊少皇 黄伊汶 林子聪 梁小龙 陈国坤]]>  </item> <item name="where"> <![CDATA[中国香港]]>  </item> <item name="language"> <![CDATA[国语]]>  </item> <item name="long"> <![CDATA[104分钟]]>  </item> <item name="intro"> <![CDATA[<br>    民国年间,孤身来到上海的阿力(吴建豪 饰)意外卷入了一场惊心动魄的赌局,没想到却引发一连串的江湖杀戮,在腥风血雨之中,谱写出一段凄婉动人的故事。本片由台湾顶级人气偶像吴建豪担纲主演,周星驰《功夫》原班人马倾力打造。吴建豪本人更是一改他以往斯文帅哥形象,特别进行连串武术特训,坚持亲自出演所有动作场面。<br>]]>  </item>  <item name="img">海报.jpg</item>  <item name="click">208</item>  <item name="tjtime"></item>  <item name="addtime">2007-10-9 19:21:40</item>  <item name="standid">200705041049151082081399</item>  <item name="allowip"></item>  <item name="allowuser"></item>  <item name="nopaycansee"></item>  </movie>



还有这另外一个,两个并不能用同一个批处理提取出来.
<?xml version="1.0" encoding="gb2312" ?><movie><item name="name"> <![CDATA[终极任务p78]]>  </item> <item name="type"><![CDATA[科幻/动作]]>  </item> <item name="actor"> <![CDATA[窛沙·库岑科 弗拉季米尔·弗多维琴科夫]]>  </item> <item name="where"> <![CDATA[俄罗斯]]>  </item> <item name="language"> <![CDATA[俄语]]>  </item> <item name="long"> <![CDATA[87分钟]]>  </item> <item name="intro"> <![CDATA[有史以来俄罗斯投资最大,最令人目眩神迷的科幻惊悚动作片!俄罗斯电影最大投资的动作影片,高达1000万美元的投资。完美的视觉效果,错综复杂的计算机谜团,令人目眩的打斗场面,以及英国流行摇滚组合Sneak Pimps亲自操刀创作的音乐,都使这部影片当仁不让的成为俄罗斯2007年度最值得期待的年度大片!<p>  故事发生在不久的将来。因为实验的事故引发了一种病毒,致使接触到这病毒的人都变成了僵尸,于是,一批特种部队进入这个实验室寻找解决问题的方法…… <br>  问题在于,这群曾经并肩战斗过的队员们彼此之间仍然存有种种过往和芥蒂,使他们的相处合作总是问题种种。于是,摆在他们面前的不仅是来自外界的莫测的危险,还有来自他们自己的内部危机…]]>  </item>  <item name="img">海报.jpg</item>  <item name="click">46</item>  <item name="tjtime"></item>  <item name="addtime">2007-10-9 19:21:44</item>  <item name="standid">200706211202270971970288</item>  <item name="allowip"></item>  <item name="allowuser"></item>  <item name="nopaycansee"></item>  </movie>

点击率在 <item name="click"> 这一行后面
它后面的数字就是点击率

2009-3-11 18:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 5 楼』:  

-_-叫你传还得懒得传呢
贴到论坛到再另存,格式和编码可能会和源文件不一样

用for 命令应该是完全可以解决这个问题的
我就懒得用了
我用fr工具来处理
@echo off
type info.xml>1.txt
fr -rnnlic:".*name=\"click\">([0-9]*)\</item\>.*" -t:"\1" 1.txt
set /p click=<1.txt
echo 点击数%click%
pause
[ Last edited by yishanju on 2009-3-13 at 13:00 ]




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-3-12 10:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lisyofun
初级用户





积分 87
发帖 61
注册 2008-9-18
状态 离线
『第 6 楼』:  

fr工具在哪,我怎么没找到?

2009-3-13 12:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 7 楼』:  

http://baiy.cn/utils/fr/fr.rar

2009-3-13 12:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 8 楼』:  

专门处理XML 的命令行工具叫xmlstarlet
sed AWK之类的都可以,只不过比较难学

2009-3-13 12:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 9 楼』:  


@echo off
for /f %%a in ('dir /b /s /a "*.xml"') do (
for /f "delims=" %%b in (%%a) do (set str=%%b&call :sub)
)
pause
goto :eof

:sub
set "str=%str:*"click"=%"
for /f "tokens=1 delims=><" %%c in ('echo.%str%') do (echo %%c)
goto :eof
[ Last edited by netbenton on 2009-3-14 at 13:38 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-3-13 20:49
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
lisyofun
初级用户





积分 87
发帖 61
注册 2008-9-18
状态 离线
『第 10 楼』:  

netbenton的不知道为什么运行不了,闪一下就没了。
yishanju谢谢你了,两次都是你帮我.

2009-3-14 11:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 11 楼』:  

不客气

2009-3-14 11:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 12 楼』:  

有等号纯批处理不了。还是用3方吧



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-3-14 15:49
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 13 楼』:  

我看到所有XML 文件都是有十七个等号
FOR 里用=分割不行吗

2009-3-14 16:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 14 楼』:  

哦!我没有那么细心。
不过每个文件只有一行,超过8k的还是处理不了



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-3-14 23:31
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 15 楼』:  

我试过用=分割,是有些得不到点击数
看样子还是第三方工具好用

2009-3-15 01:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: