Добавить текст в несколько файлов.txt

У меня есть папка с тысячами текстовых файлов, и мне нужно конвертировать их все (что я уже знаю, как сделать). Прежде чем делать что-либо из этого, мне нужно добавить 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 ответ

Решение

Вот полный код пакета, основанный на этой задаче.

Файл верхнего и нижнего колонтитула можно настроить в верхней части командного файла. Пакетный файл автоматически создает и удаляет файлы верхнего и нижнего колонтитула, если они еще не существуют при запуске пакетного файла.

Все файлы *.txt в текущем каталоге объединяются вместе с файлом верхнего и нижнего колонтитула в файлы *.html с помощью команды COPY, при этом три исходных файла задаются с помощью + оператор. Существующий файл *.html в текущем каталоге с тем же именем, что и файл *.txt, перезаписывается, за исключением того, что атрибут атрибута "только для чтения" установлен для существующего файла 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

Опция КОПИЯ /B интерпретация файлов как двоичных файлов предотвращает добавление замены управляющего символа в конце сгенерированного файла HTML.

Обратите внимание, что FOR игнорирует файлы *.txt со скрытым набором атрибутов.

Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.

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

Читайте также статью Microsoft об использовании операторов перенаправления команд.

Другие вопросы по тегам