由于从网上下载的节目单格式与数字电视机顶盒管理服务器下发的节目单格式不一致,因此导致管理服务器下发节目单出错,下面给出一个vbs脚本用来批处理节目单。(比手工记事本逐个修改轻松多了)
原始节目单格式如下:
10/08/23 星期一
04:00:00 36 电视剧:沂蒙32/42
04:36:55 30 第一精品之军事纪实:2010-15
05:06:55 20 今日说法:以案说法:2010-227
05:26:55 30 人与自然:探秘自然:2010-131
06:00:00 10 天天饮食:2010-180
...
...
02:19:25 46 电视剧:沂蒙34/42
03:05:25 46 电视剧:沂蒙35/42
03:52:25 7 电视剧:沂蒙36/42
10/08/24 星期二
04:00:00 38 电视剧:沂蒙36/42
04:38:25 8 魔法奇迹:2010-17
04:46:25 10 精彩一刻:2010-38
04:56:55 30 第一精品之军事纪实:2
然后我们的管理服务器下发的节目单格式如下:
10/08/23 星期一
04:00 电视剧:沂蒙32/42
04:36 第一精品之军事纪实:2010-15
05:06 今日说法:以案说法:2010-227
05:26 人与自然:探秘自然:2010-131
06:00 天天饮食:2010-180
06:10 焦点访谈:用事实说话
06:25 新闻联播
....
....
02:19 电视剧:沂蒙34/42
03:05 电视剧:沂蒙35/42
03:52 电视剧:沂蒙36/42
10/08/24 星期二
04:00 电视剧:沂蒙36/42
04:38 魔法奇迹:2010-17
04:46 精彩一刻:2010-38
04:56 第一精品之军事纪实:2010-16
主要的区别是在时间格式和中间多了一个数字。下面给出批处理的代码,如果有类似需要的朋友,可以根据下面的代码自行修改即可。代码用windows记事本编辑,然后另存为"节目单处理.vbs”即可。
使用的时候,将需要修改的节目单文件拖到到“节目单处理.vbs”文件上,程序就会自动启动并前自动进行转换,然后在同一位置自动生成一个和原文件同名+out的文件。
原始文件叫01.txt,将01.txt 拖到到“自动节目单处理”的上面。 然后松开鼠标。
鼠标一松开,程序就会自动转换好了。
转换后的结果对比!
下面给出脚本代码(直接粘贴复制进记事本,然后另存即可使用!完全绿色版)
Dim fileName
Set objArgs=WScript.Arguments
fileName=objArgs(0)
Call Main()
Sub Main()
Dim fso,OutFile,InFile
Set fso=CreateObject("Scripting.FileSystemObject")
Set InFile=fso.OpenTextFile(fileName,1,True)
Set OutFile=fso.CreateTextFile(fileName+".out.txt",Ture)
do until InFile.atendofstream
strline=InFile.readline
OutFile.WriteLine(Fx(strLine))
loop
InFile.close
OutFile.Close
Set fso=nothing
Msgbox "文件处理完成!转换后的文件名为"+fileName+".out.txt"
End Sub
Function Fx(str)
dim t
if Len(str)=14 then
Fx=str
else
if Len(str)=0 then
Fx=str
else
Fx=left(str,5)
t=right(str,len(str)-11)
if left(t,1)=" " then
t=right(t,len(t)-1)
end if
if left(t,1)=" " then
t=right(t,len(t)-1)
end if
if left(t,1)=" " then
t=right(t,len(t)-1)
end if
if right(left(t,2),1)=" " then
t=right(t,len(t)-2)
end if
Fx=Fx+" "+t
end if
end if
End Function
代码说明:
Main 函数主要负责接收处理vbScript传入的参数(文件名),然后调用Fx进行处理,最后 调用Scripting.FileSystemObject对象将结果保存到制定位置。
Function Fx 负责处理字符串。如果你的格式和我们的格式不一致,就需要修改了。
有兴趣的朋友可以试试!欢迎来电交流!