有可用來解決這個好得多工具。但它可能與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字符符號&#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%
沒有與此溶液
- 空行(含有隻不過空格線)將從所述內容部分被剝離一些限制。可能不是HTML的問題。消除這種限制會使解決方案複雜化並減慢速度。
- 以...開頭的行;將從內容部分中刪除。這個限制很容易被刪除,但代碼很難看。它包括在最後的FOR/F循環中指定<LF>作爲EOL字符。
- 模板文件必須使用Windows新行標準<CR> <LF>。使用此解決方案,使用<LF>的Unix樣式文件將失敗。這也可以解決,但它又會使事情複雜化並放慢速度。
- 如前所述,模板中的內容觸發器可以包含前導空格,但不能在行上包含任何後續字符。消除這一限制會減慢過程。
- 行被限制在模板1024個字符
- 尾隨控制字符是從在模板
每條線在該語言中,給定的哪個輸入汽提,用什麼變化?如果它是Unix系統上的一大堆文件,「man sed」或Perl。 – tripleee
你想要一個腳本或其他的東西,自動找到該行,然後將變量放在下面? –
嗯......我想在蝙蝠中做這件事,因爲它很簡單,但是如果你在這裏發佈C程序,我不會與它作鬥爭。我想編輯一個html文件...一切都在標題中。 –