中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-25 17:09
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于提取电影点击率的批处理 查看 903 回复 14
楼 主 关于提取电影点击率的批处理 发表于 2009-03-11 08:59 ·  中国 湖南 郴州 电信
初级用户
★★
积分 87
发帖 61
注册 2008-09-18 11:32
17年会员
UID 125941
性别 男
状态 离线
我想通过批处理来删除一些点击率过低的电影,在每个电影夹的文件下都有一个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>

所以我想有什么办法能准确的把点击率提取出来。
请大家帮下忙.
2 发表于 2009-03-11 16:26 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
这么一大堆东西看着眼全花了
就没说点击率在哪

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
3 发表于 2009-03-11 16:31 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
最好能传一个info.xml上来

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
4 发表于 2009-03-11 18:53 ·  中国 湖南 郴州 电信
初级用户
★★
积分 87
发帖 61
注册 2008-09-18 11:32
17年会员
UID 125941
性别 男
状态 离线
把下面这个另存为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"> 这一行后面
它后面的数字就是点击率
5 发表于 2009-03-12 10:17 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
-_-叫你传还得懒得传呢
贴到论坛到再另存,格式和编码可能会和源文件不一样

用for 命令应该是完全可以解决这个问题的
我就懒得用了
我用fr工具来处理

@echo off
type info.xml>1.txt
fr -rnnlic:".*name=\"click\">(*)\</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
6 发表于 2009-03-13 12:39 ·  中国 湖南 郴州 电信
初级用户
★★
积分 87
发帖 61
注册 2008-09-18 11:32
17年会员
UID 125941
性别 男
状态 离线
fr工具在哪,我怎么没找到?
7 发表于 2009-03-13 12:52 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
8 发表于 2009-03-13 12:59 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
专门处理XML 的命令行工具叫xmlstarlet
sed AWK之类的都可以,只不过比较难学
9 发表于 2009-03-13 20:49 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
@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 ]
精简
=> 个人网志
10 发表于 2009-03-14 11:10 ·  中国 湖南 郴州 电信
初级用户
★★
积分 87
发帖 61
注册 2008-09-18 11:32
17年会员
UID 125941
性别 男
状态 离线
netbenton的不知道为什么运行不了,闪一下就没了。
yishanju谢谢你了,两次都是你帮我.
11 发表于 2009-03-14 11:48 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
不客气
12 发表于 2009-03-14 15:49 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
有等号纯批处理不了。还是用3方吧
精简
=> 个人网志
13 发表于 2009-03-14 16:16 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
我看到所有XML 文件都是有十七个等号
FOR 里用=分割不行吗
14 发表于 2009-03-14 23:31 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
哦!我没有那么细心。
不过每个文件只有一行,超过8k的还是处理不了
精简
=> 个人网志
15 发表于 2009-03-15 01:15 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
我试过用=分割,是有些得不到点击数
看样子还是第三方工具好用
论坛跳转: