由于从网上下载的节目单格式与数字电视机顶盒管理服务器下发的节目单格式不一致,因此导致管理服务器下发节目单出错,下面给出一个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 负责处理字符串。如果你的格式和我们的格式不一致,就需要修改了。

 

   有兴趣的朋友可以试试!欢迎来电交流!