将文本添加到多个.txt文件

时间:2017-09-15 14:53:36

标签: batch-file cmd

我有一个包含数千个文本文件的文件夹,我需要将它们全部转换(我已经知道该怎么做)。在执行任何操作之前,我需要在文本文件中的任何内容之前和之后添加HTML代码。示例如下

<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提示符下运行循环,但我对合并多个文件的程度只有足够的知识,而不是实际添加文本。

1 个答案:

答案 0 :(得分:1)

以下是基于此任务的完整批处理代码。

可以在批处理文件的顶部配置页眉和页脚文件。如果在运行批处理文件时尚未存在,则批处理文件会自动创建和删除页眉和页脚文件。

使用命令 COPY 将当前目录中的所有* .txt文件与页眉和页脚文件合并到* .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

请注意 FOR 会忽略隐藏属性设置的* .txt文件。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

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

另请阅读Microsoft有关Using Command Redirection Operators

的文章