[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何根据文本内的指定字符串将相关内容生成txt文本并分类存?

本帖最后由 pcl_test 于 2016-7-3 19:47 编辑

我有个“频道列表.txt”文件,文件内容如下
{央视频道}
CCTV1综合,218.24.47.44/CCTV1.m3u8
CCTV1综合,vdn.apps.cntv.cn/api/getLiveUrlCommonRedirectApi.do?channel=pa://cctv_p2p_hdcctv1&type=ipad
CCTV1综合,vdn.apps.cntv.cn/api/getLiveUrlCommonRedirectApi.do?channel=pa://cctv_p2p_hdcctv1&type=ipad
CCTV1综合,rtmp.cntv.lxdns.com/live/cctv1/playlist.m3u8
CCTV2财经,218.24.47.44/CCTV2.m3u8
CCTV2财经,vdn.apps.cntv.cn/api/getLiveUrlCommonRedirectApi.do?channel=pa://cctv_p2p_hdcctv2&type=ipad
CCTV2财经,218.24.47.44/CCTV2.m3u8
CCTV2财经,rtmp.cntv.lxdns.com/live/cctv2/playlist.m3u8
CCTV3综艺,stream1.gzcbn.tv:1935/app_2/ls_3.stream/playlsit.m3u8?session=jyb321123
CCTV3综艺,vdn.apps.cntv.cn/api/getLiveUrlCommonRedirectApi.do?channel=pa://cctv_p2p_hdcctv3&type=ipad
CCTV3综艺,116.199.127.68/cctv3
CCTV3综艺,vdn.apps.cntv.cn/api/getLiveUrlCommonRedirectApi.do?channel=pa://cctv_p2p_hdcctv3&type=ipad
{地方卫视}
北京卫视,live.gslb.letv.com/gslb?stream_id=bjws&tag=live&ext=m3u8&sign=live_tv
北京卫视,tvie01.ucatv.com.cn/channels/xjyx/BeiJing-HD-Suma/flv:BJ_HD_Suma
北京卫视,web-play.pptv.com/web-m3u8-300166.m3u8?type=m3u8.web.pad
东方卫视,zb.v.qq.com:1863/?progid=3900155972
东方卫视,live.gslb.letv.com/gslb?stream_id=dongfang&tag=live&ext=m3u8&sign=live_tv
广东卫视,zb.v.qq.com:1863/?progid=857894899
广东卫视,zb.v.qq.com:1863/?progid=857894899
广东卫视,live.gslb.letv.com/gslb?stream_id=guangdong&tag=live&ext=m3u8&sign=live_tv

通过批处理遍历“频道列表.txt”文件,实现如下功能:
1、遇见中括号内的内容如“{央视频道}”,就通过批处理新建“央视频道”的文件夹,并把此类别下的链接生成txt文件,存放到分类文件夹下
2、然后分类的内容如“CCTV1综合,218.24.47.44/CCTV1.m3u8”就生成“CCTV1综合.txt”文件,“CCTV1综合.txt”文件内容为“218.24.47.44/CCTV1.m3u8”
3、由于分类包含的内容有重复,如“CCTV1综合”,遇到第2个重复的即在生成的"CCTV1综合.txt"后面自动累加个数字“_1”变成"CCTV1综合_1.txt",以此类推,第3个就变成"CCTV1综合_2.txt"

请各位朋友们帮忙看看如何写,谢谢!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

请问 在这一行: set ".%%b=0" & echo,%%c>"!fd!\%%b.txt"
为什么用 .%%b
为什么用 .

TOP

本帖最后由 hbb 于 2014-1-4 21:57 编辑

回复 15# apang


    万分感谢,我本想自己学着修改来着,可是能力有限,所以才一点点的提出,膜拜膜拜!

TOP

回复 14# hbb


    话说,为何顶楼不一次性说清楚呢?修改下vbs,此帖我不再回复
  1. Set fso = Createobject("Scripting.FileSystemObject")
  2. Set dic1 = CreateObject("Scripting.Dictionary")
  3. Set dic2 = CreateObject("Scripting.Dictionary")
  4. Set file = fso.OpenTextFile("List.txt")
  5. Do Until file.AtEndOfStream
  6.     strLine = Trim(file.ReadLine)
  7.     If Left(strLine,1) = "{" and Right(strLine,1) = "}" Then
  8.         strFD = Mid(strLine,2,Len(strLine)-2)
  9.     ElseIf strLine <> "" and strFD <> "" Then
  10.         If Not fso.FolderExists(strFD) Then
  11.             fso.CreateFolder strFD
  12.         End If
  13.         strName = Left(strLine,InStr(strLine,",")-1)
  14.         strUrl = Right(strLine,Len(strLine)-InStr(strLine,","))
  15.         strKey = strFD & "\" & strName
  16.         If dic1.Exists(strKey) Then
  17.             dic1.Item(strKey) = dic1.Item(strKey) + 1
  18.         Else
  19.             dic1.Add strKey,101
  20.         End If
  21.         s = "_源" & Right(dic1.Item(strKey),2)
  22.         s = "<Entry> <Title>" & strName & s & "</Title> <Ref href = "
  23.         s = s & chr(34) & strUrl & chr(34) &"/> </Entry>"
  24.         If dic2.Exists(strKey) Then
  25.             dic2.Item(strKey) = dic2.Item(strKey) & vbcrLf & s
  26.         Else
  27.             dic2.Add strKey,"<Asx Version = ""3.0"">" & vbCrLf & s
  28.         End If
  29.     End If
  30. Loop
  31. For Each a in dic2.Keys
  32.     fso.OpenTextFile(a & ".txt",2,true).Write dic2.Item(a) & vbCrLf & "</Asx>"
  33. Next
  34. MsgBox "OK"
复制代码

TOP

还有,我想在生成的每个txt文件内的一头一尾添加以下两行
<Asx Version = "3.0">
</Asx>
最后生成的“CCTV1综合.txt”文本内容格式如下:
<Asx Version = "3.0">
<Entry> <Title>CCTV1综合_源01</Title> <Ref href = "218.24.47.44/CCTV1.m3u8"/> </Entry>
<Entry> <Title>CCTV1综合_源02</Title> <Ref href = "218.24.47.44/CCTV1.m3u9"/> </Entry>
</Asx>
请问批处理应该怎么修改?谢谢!

TOP

本帖最后由 hbb 于 2014-1-4 20:56 编辑

回复 12# apang

vbs调试没问题了,真心喜欢bat的批处理
apang兄能改下bat吗?
报如下错误:
运算符不存在。
找不到操作数。

TOP

回复 11# hbb


    最后一行为{},即文件夹名为空,所以报错。第9行这样改:
  1.         If strFD <> "" and Not fso.FolderExists(strFD) Then
复制代码

TOP

回复 10# apang

附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

回复 9# hbb


    你把vbs和bat运行报错的文本打包传上来,我试试看

TOP

回复 8# apang


    vbs运行也会报错,不太懂,不方便调试,不知apang兄能再调一调bat吗?谢谢!

TOP

回复 5# hbb


    批处理这样写是没有考虑通用性的,如果你不讨厌vbs的话,试试第二个代码

TOP

回复 4# terse


    确实。
愚蠢的notepad.exe,我再多加一行中文注释就不乱码了:Rem 嘿嘿

TOP

回复 2# apang


   高手能不能解释一下 set /a ".!fd!.%%b+=1"中的.号的作用啊,头都想炸了

TOP

本帖最后由 hbb 于 2014-1-4 17:48 编辑

首先感谢apang大神的热心解答,在使用过程中,出现了如下问题,执行bat批处理时,list.txt文本包含如下内容:

{央视频道}
CCTV4中文国际(亚洲),live.gslb.letv.com/gslb?stream_id=cctv4&tag=live&ext=m3u8&sign=live_tv
CCTV5+体育赛事,vdn.apps.cntv.cn/api/getLiveUrlCommonRedirectApi.do?channel=pa://cctv_p2p_hdcctvgaoqing&type=ipad

的时候报如下错误:
运算符不存在。
找不到操作数。
请按任意键继续. . .

执行完后,源的数字会变成00,请问如何解决,谢谢!

TOP

回复 2# apang
我上次遇到的是  "系统" 两字
应该是编码问题

TOP

返回列表