标题: 关于提取电影点击率的批处理
[打印本页]
作者: lisyofun
时间: 2009-3-11 08:59
标题: 关于提取电影点击率的批处理
我想通过批处理来删除一些点击率过低的电影,在每个电影夹的文件下都有一个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>
所以我想有什么办法能准确的把点击率提取出来。
请大家帮下忙.
作者: yishanju
时间: 2009-3-11 16:26
这么一大堆东西看着眼全花了
就没说点击率在哪
作者: yishanju
时间: 2009-3-11 16:31
最好能传一个info.xml上来
作者: lisyofun
时间: 2009-3-11 18:53
把下面这个另存为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"> 这一行后面
它后面的数字就是点击率
作者: yishanju
时间: 2009-3-12 10:17
-_-叫你传还得懒得传呢
贴到论坛到再另存,格式和编码可能会和源文件不一样
用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 ]
作者: lisyofun
时间: 2009-3-13 12:39
fr工具在哪,我怎么没找到?
作者: yishanju
时间: 2009-3-13 12:52
http://baiy.cn/utils/fr/fr.rar
作者: yishanju
时间: 2009-3-13 12:59
专门处理XML 的命令行工具叫xmlstarlet
sed AWK之类的都可以,只不过比较难学
作者: netbenton
时间: 2009-3-13 20:49
@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 ]
作者: lisyofun
时间: 2009-3-14 11:10
netbenton的不知道为什么运行不了,闪一下就没了。
yishanju谢谢你了,两次都是你帮我.
作者: yishanju
时间: 2009-3-14 11:48
不客气
作者: netbenton
时间: 2009-3-14 15:49
有等号纯批处理不了。还是用3方吧
作者: yishanju
时间: 2009-3-14 16:16
我看到所有XML 文件都是有十七个等号
FOR 里用=分割不行吗
作者: netbenton
时间: 2009-3-14 23:31
哦!我没有那么细心。
不过每个文件只有一行,超过8k的还是处理不了
作者: yishanju
时间: 2009-3-15 01:15
我试过用=分割,是有些得不到点击数
看样子还是第三方工具好用