2017-09-15 14 views
1

私は何千ものテキストファイルがあるフォルダを持っています。私はそれらをすべて変換する必要があります。いずれかを行う前に、テキストファイルにあるものの前後にHTMLコードを追加する必要があります。例は次のとおりです複数の.txtファイルにテキストを追加する

<HTML><HEAD><META content="IE=5.0000" http-equiv="X-UA-Compatible"> 
<META content="text/html; charset=windows-1252" http-equiv=Content-Type> 
<META name=GENERATOR content="MSHTML 11.00.10586.1045"></HEAD> 
<BODY><PRE> 
TEXT FILE CONTENT GOES HERE 
</PRE></BODY></HTML> 

これはどうしてですか?私は、cmdのプロンプトでループを実行することができることを知っていますが、私は複数のファイルをマージし、実際にテキストを追加しない程度の知識しか持っていません。

+0

「before.txt」と「after.txt」に追加するテキスト(静的、右か?)を「千のファイル」ごとにマージします。 – Stephan

+6

頭の部分をhead.dat、tail.datの下の部分、 'for%I(* .txt)のコピーhead.dat +"%I "+ tail.dat"%〜nI-fixedに置くことができます。 txt "などとなります。コピー操作の '+'演算子の説明については 'copy /? 'を参照してください。 – rojo

+0

ありがとう。ループの中で "do"を省いていますが、それを追加した後はすばらしく働いています。ありがとう! – Xiodrade

答えて

1

ここに、このタスクに基づく完全なバッチコードがあります。

ヘッダーファイルとフッターファイルは、バッチファイルの先頭に設定できます。バッチファイルは、既にバッチファイルを実行していない場合は、ヘッダファイルとフッターファイルを自動的に作成して削除します。

カレントディレクトリのすべての* .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の記事も参照してください。

+0

これをバンプして申し訳ありませんが、見つかったディレクトリにファイルを保存するためにこれを変更することができますか?私は/ R %% I(* .txt)の行をコピー/ B "%HeaderFile%" + "%% I" + "%FooterFile%" "%%〜nIに変更しました。html "> nulしかし、それを変換してバッチファイルを使ってディレクトリに入れます。 – Xiodrade

+0

@Xiodrade' "%%〜nI.html" 'を置き換えます。 '.html'を付加したファイルパスとファイル拡張子' '%%〜dpnI.html '' - '.html'を付加したファイル拡張子のないドライブとパスとファイル名ループ変数' I'再帰検索に__FOR__オプション '/ R'を使用することにより、ループ変数' I'に割り当てられた文字列は、ファイル拡張子を持つファイル名ではなくなりました。これは、しかしファイル拡張子と完全なパスを持つファイル名 – Mofi

+0

ありがとうございます。私はdpnが何のために立っていたのか分からなかったが、今はやっている! – Xiodrade

関連する問題