我正在努力争取这几个小时,但我无法让它正常工作。我想做的是找到一条线
<div id="content">
并添加以下几行,其中包含一些变量,如
<div class="post">
<h2 class="title"><a href="#">**var**</a></h2>
<p class="meta"><span class="date">**var**</span>
<span class="posted">Posted by <a href="#">**var**</a></span></p>
<div style="clear: both;">
</div>
<div class="entry moreless">
**var**
</div>
</div>
有可能吗?如果是这样的话?
- 大卫
答案 0 :(得分:2)
有更好的工具可用于解决此问题。但是有可能使用Windows批处理!
假设下面的文本是名为TEMPLATE.HTML的最外层模板文件。内容触发器行可以缩进,但此解决方案在触发器后不允许使用额外的字符。 (这个限制可以解决,但会减慢速度)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Sample template for building a page</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<div id="content">
</div>
</body>
</html>
下面的示例内容文件(名为CONTENT_HTML.TXT)包含指定为!varName的变量!并且批处理文件将使用延迟扩展来执行变量替换。这意味着如果您希望内容包含感叹号,则必须以某种方式对其进行编码。有两种选择。一种是使用HTML字符符号&amp;#33;这适用于文本内容,但如果您想要HTML注释则无效。对于评论,我定义了一个!X!将扩展为的变量!
<div class="post">
<h2 class="title"><a href="#">!TITLE!</a></h2>
<p class="meta"><span class="date">!DATE!</span>
<span class="posted">Posted by <a href="#">!AUTHOR!</a></span></p>
<div style="clear: both;">
</div>
<div class="entry moreless">
Example with exclamation point!<br />
Another example with exclamation point!X!
</div>
<!X!--
sample comment
-->
</div>
最后,这是一个批处理文件,它将所有内容放在一起并创建一个名为FINAL.HTML的输出文件。我对变量的值进行了硬编码,但它们可以很容易地作为参数传递。
@echo off
setlocal enableDelayedExpansion
set X=^^^!
set TITLE=Sample HTML build
set DATE=%date%
set AUTHOR=Santa Clause
set TEMPLATE="template.html"
set CONTENT="content_html.txt"
set FINAL="final.html"
<%TEMPLATE% (
for /f %%A in ('type %TEMPLATE%^|find /c /v ""') do (
for /l %%N in (1 1 %%A) do (
set "ln="
set/p "ln="
echo(!ln!
set "test=!ln:*<=<!"
if "!test!"=="<div id="content">" (
for /f "usebackq delims=" %%L in (%CONTENT%) do echo(%%L
)
)
)
)>%FINAL%
此解决方案存在一些限制