用于将文本解析为rss的批处理文件

时间:2013-09-01 14:51:15

标签: parsing batch-file rss

我试图为本地rtmp服务器制作某种自动rss更新程序,我认为最简单的方法是制作一个或两个批处理文件,让它们通过Windows任务计划程序每分钟运行一次。

此服务器在dir中记录flv和mp4文件,并且我在该本地服务器上嵌入了jwplayer。 该播放器的播放列表通过rss文件提供,我希望它们自动更新。

第一个批处理文件很简单

del RssRaw.txt dir / b> RssRaw.txt

第二个是那个我只是无能为力并且想要求帮助的人。

我希望它解析RssRaw.txt文件的每一行,并以下列格式将其保存在rss / xml文件中:

<rss version="2.0" xmlns:jwplayer="http://rss.jwpcdn.com/">
    <channel>

    <item>
        <title> #1 </title>
        <jwplayer:source file="/assets/#1.1" />
    </item>
    <item>
        <title> #2 </title>
        <jwplayer:source file="/assets/#2.1" />
    </item>

</channel>
</rss>

其中#1是正确的文件名,#1.1是带扩展名的文件名(.flv或.mp4) 而#2和#2.1是下一行/文件。

我希望可以根据RssRaw.txt中的行数自动生成标记

如果我可以排除批处理文件中的某些行/单词将会有所帮助,因为使用此设置它还会列出RssRaw.txt中的文本和批处理文件

任何人都可以帮助我或指出我正确的方向,甚至知道这是否可以在批处理文件中?或者可能有更好的解决方案呢?

(请记住,我试图使其成为本地服务器,这就是为什么我没有看到webservices)。

1 个答案:

答案 0 :(得分:0)

直接从目录中读取文件,不需要第一批文件:

@ECHO OFF &SETLOCAL
SET "header1=<rss version="2.0" xmlns:jwplayer="http://rss.jwpcdn.com/">"
SET "header2=    <channel>"
SET "footer1=    </channel>"
SET "footer2=</rss>"

(
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO(!header1!
ECHO(!header2!
ECHO(
ENDLOCAL
FOR %%a IN (*.flv *.mp4) DO (
    ECHO(    ^<item^>
    ECHO(        ^<title^> %%~na ^</title^>
    ECHO(        ^<jwplayer:source file="/assets/%%~nxa" /^>
    ECHO(    ^</item^>
)
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO(
ECHO(!footer1!
ECHO(!footer2!
)>outfile.rss

然而,如果您想从文件中读取,请将FOR循环代码替换为:

FOR /f %%a IN (RssRaw.txt) DO (