ここに、このタスクに基づく完全なバッチコードがあります。
ヘッダーファイルとフッターファイルは、バッチファイルの先頭に設定できます。バッチファイルは、既にバッチファイルを実行していない場合は、ヘッダファイルとフッターファイルを自動的に作成して削除します。
カレントディレクトリのすべての* .txtファイルが* .htmlファイルは+
演算子で指定されている3つのソースファイルを指定して、コマンドCOPYを使用し、ヘッダーとフッターファイルと一緒にマージされます。既存の* .txtファイルと同じ名前の既存の* .htmlファイルは、既存のHTMLファイルに読み取り専用属性が設定されているか、現在のNTFSアクセス許可またはファイル共有アクセス許可が既存のHTMLファイルを上書きすることを許可しません。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "HeaderFile=%TEMP%\Header.tmp"
set "FooterFile=%TEMP%\Footer.tmp"
set "DeleteHeaderFile="
set "DeleteFooterFile="
if not exist "%HeaderFile%" (
set "DeleteHeaderFile=1"
echo ^<HTML^>^<HEAD^>^<META content="IE=5.0000" http-equiv="X-UA-Compatible"^>
echo ^<META content="text/html; charset=windows-1252" http-equiv=Content-Type^>
echo ^<META name=GENERATOR content="MSHTML 11.00.10586.1045"^>^</HEAD^>
echo ^<BODY^>^<PRE^>
) >"%HeaderFile%"
if not exist "%FooterFile%" (
set "DeleteFooterFile=1"
echo ^</PRE^>^</BODY^>^</HTML^>>"%FooterFile%"
)
for %%I in (*.txt) do copy /B "%HeaderFile%"+"%%I"+"%FooterFile%" "%%~nI.html" >nul
if defined DeleteHeaderFile del "%HeaderFile%"
if defined DeleteFooterFile del "%FooterFile%"
endlocal
バイナリファイルなどのファイルを解釈するためのCOPYオプション/B
は、生成されたHTMLファイルの末尾に制御文字substituteを追加防ぎます。
FORは、隠し属性が設定された* .txtファイルを無視します。
使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。
copy /?
del /?
echo /?
endlocal /?
for /?
set /?
setlocal /?
Using Command Redirection OperatorsについてのMicrosoftの記事も参照してください。
「before.txt」と「after.txt」に追加するテキスト(静的、右か?)を「千のファイル」ごとにマージします。 – Stephan
頭の部分をhead.dat、tail.datの下の部分、 'for%I(* .txt)のコピーhead.dat +"%I "+ tail.dat"%〜nI-fixedに置くことができます。 txt "などとなります。コピー操作の '+'演算子の説明については 'copy /? 'を参照してください。 – rojo
ありがとう。ループの中で "do"を省いていますが、それを追加した後はすばらしく働いています。ありがとう! – Xiodrade