如何从批处理文件中替换html代码(读取:奇数字符)

时间:2013-11-20 10:51:06

标签: batch-file

我编译了一个广泛的批处理脚本,用于从服务器下载rss文件,并将其中引用的图像下载到本地路径。下一步是修改我下载的rss文件中的图像源。 (最终它将用于仅连接到LAN的数字显示解决方案)

我通过调用vbs脚本找到了一种工作方式:

在我的批次中我有:

cscript replace.vbs "rss.cfm" "http://blabla.com/images/thumb" "RSS-script/images/normal"

vbs脚本包含:

Const ForReading = 1    
Const ForWriting = 2

strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close

strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText  'WriteLine adds extra CR/LF
objFile.Close

不幸的是,对于我的数字标牌软件来说,这还不够。什么工作是为图像创建不同的标签。所以我修改了我的脚本来替换一些标签和代码,但由于脚本崩溃的奇怪字符。

所以我需要替换这个相同的字符串:(对于前缀,类似于后缀)

<description><![CDATA[<img src="http://blabla.com/images/thumb

<image><url>RSS-script/images/normal

对于后缀,我应该替换.jpg"

.jpg</url></image><description><![CDATA[<

我找到了许多解决方案,他们向美国人说每个符号前面的一个插入符号^转义字符,但这对我帮助不大,因为img和src之间也有一个空格。我试过单引号,后引号,没有引号。实际上甚至不知道我在做什么:我的脚本功能仅限于我在这里或ss64.com上找到的基本解释

我原来的rss文件如下所示:

<item>                      
<title>this is the title of the item</title>
<description><![CDATA[<img src="http://www.blabla.com/images/thumb_xyz.jpg" align="left" hspace="5" vspace="5" alt="picture 1" title="description title" width="200">
<p>
STORY CONTENT
</p>
]]></description> 
<pubDate>Tue, 19 Nov 2013 18:15:38 +0100</pubDate>
<category>HEADLINES</category>
</item>

我的最终结果应该是:(经过测试和运作)

<item>
<title>this is the title of the item</title>
<image><url>RSS-script/images/normal_xyz.jpg</url></image>
<description><![CDATA[< align="left" hspace="5" vspace="5" alt="picture 1" title="description title" width="200">
<p>
STORY CONTENT
</p>
]]></description> 
<pubDate>Tue, 19 Nov 2013 18:15:38 +0100</pubDate>
<category>HEADLINES</category>
</item>

感谢您提供的任何帮助,感谢抱歉。至少我认为所有信息都在这里..

维克

1 个答案:

答案 0 :(得分:0)

这将修改file.rss中的示例RSS源,并将其重定向到file2.rss

这使用了来自 - https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

的名为repl.bat的帮助程序批处理文件

repl.bat放在与批处理文件相同的文件夹中或放在路径上的文件夹中。

@echo off
type "file.rss" |repl "(.*<!\[CDATA\[<)img src=\x22.*\/thumb_(.*\.jpg)\x22(.*)" "<image><url>RSS-script/images/normal_$2</url></image>\r\n$1$3" x >"file2.rss"