2017-09-15 126 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

將文本添加到(「靜態」,對嗎?)到'.txt'和'after.txt',並將它們與每個「數千個文件」合併。 – Stephan

+6

您可以將頂部放在head.dat中,底部放在tail.dat中,'%for I放在(* .txt)中複製head.dat +「%I」+ tail.dat「%〜nI-fixed。 txt「或類似的。有關拷貝操作中'+'操作符的解釋,請參閱'copy /?'。 – rojo

+0

謝謝rojo。在循環中忽略了「do」,但是在我補充說它工作的很好之後。謝謝! – Xiodrade

回答

1

這是一個基於這個任務的完整批處理代碼。

可以在批處理文件的頂部配置頁眉和頁腳文件。批處理文件自動創建並刪除頁眉和頁腳文件,如果該文件不存在已經運行批處理文件。

在當前目錄下所有的* .txt文件使用命令COPY+運營商被指定三個源文件與頁眉和頁腳文件,* .html文件合併在一起。當前目錄中與* .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

請注意,對於忽略具有隱藏屬性集的* .txt文件。

爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。

  • copy /?
  • del /?
  • echo /?
  • endlocal /?
  • for /?
  • set /?
  • setlocal /?

請閱讀微軟有關Using Command Redirection Operators的文章。

+0

對不起,這反過來了,但我想知道如何改變這種情況,以保存在他們被發現的目錄中的文件? (* .txt)中的/ R %% I複製/ B「%HeaderFile%」+「%% I」+「%FooterFile%」「%%〜nI。html「> nul,但它轉換它們,並把它們放在帶有批處理文件的目錄中,我怎麼把它放到原來的文件夾中? – Xiodrade

+0

@Xiodrade替換'」%%〜nI.html「' - 只是文件名而沒有文件路徑和文件擴展名以'.html'附加 - 轉換爲'「%%〜dpnI.html」' - 驅動器和路徑和文件名不帶文件擴展名,附加了'.html'。循環變量'I'前面的可能修飾符通過在命令提示符窗口中運行'for /?'幫助輸出來解釋。通過使用__FOR__選項'/ R'進行遞歸搜索,分配給循環變量'I'的字符串不再僅僅是文件擴展名,但文件名帶有文件擴展名和完整路徑 – Mofi

+0

感謝這個工程,我不知道dpn代表什麼,但現在我做到了! – Xiodrade