!TITLE!
Posted by !AUTHOR!
Example with exclamation point!
Another example with exclamation point!X!
sample comment
-->
有可用来解决这个好得多工具。但它可能与Windows批处理!
假设下面的文本是名为TEMPLATE.HTML的最外面的模板文件。内容触发行可以缩进,但此解决方案不允许在触发后添加额外的字符。 (这个限制可以解决,但它会慢下来)
/p>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Sample template for building a page下面的示例内容文件(名为CONTENT_HTML.TXT)包含指定为!varName的变量!批处理文件将使用延迟扩展来执行变量替换。这意味着如果您希望内容包含惊叹号,则必须以某种方式进行编码。有两种选择。一种是使用HTML字符符号!这适用于文本内容,但如果您需要HTML注释将无法正常工作。对于评论,我定义了一个!X!变量将被扩展到!
Posted by !AUTHOR!
Example with exclamation point!
Another example with exclamation point!X!
sample comment
-->
最后,这是一个批处理文件,将所有内容放在一起并创建一个名为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"
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!"=="
for /f "usebackq delims=" %%L in (%CONTENT%) do echo(%%L
)
)
)
)>%FINAL%
没有与此溶液
空行(含有只不过空格线)将从所述内容部分被剥离一些限制。可能不是HTML的问题。消除这种限制会使解决方案复杂化并减慢速度。
以...开头的行;将从内容部分中删除。这个限制很容易被删除,但代码很难看。它包括在最后的FOR/F循环中指定作为EOL字符。
模板文件必须使用Windows新行标准。使用此解决方案,使用的Unix样式文件将失败。这也可以解决,但它又会使事情复杂化并放慢速度。
如前所述,模板中的内容触发器可以包含前导空格,但不能在行上包含任何后续字符。消除这一限制会减慢过程。
行被限制在模板1024个字符
尾随控制字符是从在模板