badik пишет:можно быстро подготовить текстовый файл для просмотра в MS WORD
Забавный хак. Можно лишь добавить проверку перед удалением файла - "if exist %1.doc del %1.doc".
Ну и подобный трюк пройдёт только с Microsoft Word, Libre/OpenOffice Writer (и, наверное, многие другие редакторы) такие документы не поймёт, что стоит учитывать при обмене такими документами с другими людьми (и вообще, лучше так не делать ).
Судя по личному опыту, такие документы спокойно перевариваются 2003-2013 версиями Word.
badik, а точно не надо закрывать "<body>"?
Может стоит немного переработать скрипт до:
@echo off
for %%i in (%*) do call :myDoc %%i
exit /b 0
:myDoc
if exist %1.doc del %1.doc
call :head > %1.doc
type %1 >> %1.doc
call :foot >> %1.doc
exit /b 0
:head
echo ^<html^>
echo ^<head^>
echo ^<META http-equiv=Content-Type content="text/html; charset=windows-1251"^>
echo ^<meta HTTP-EQUIV="PRAGMA" content ="no-cache"^>
echo ^<style^>
echo @page WordSection1
echo {size:841.9pt 595.3pt;
echo mso-page-orientation:landscape;
echo margin:1.0cm 1.0cm 1.0cm 1.0cm;
echo mso-header-margin:35.4pt;
echo mso-footer-margin:35.4pt;
echo mso-paper-source:0;}
echo div.WordSection1
echo {page:WordSection1;
echo }
echo ^</style^>
echo ^</head^>
echo ^<body ^>
echo ^<div class=WordSection1 ^>
echo ^<pre style=font-size:8.0pt^>
exit /b 0
:foot
echo ^</div^>
echo ^</body^>
exit /b 0
В любом случае, могут быть проблемы с отображением, если кодировка исходного текстового файла отлична от cp1251 (возможно, необходимо "поиграться" с "chcp"), или же, если в текстовике вдруг окажутся теги HTML.
Превратить такие "суррогаты" в обычные RTF-файлы можно, например, так (простите, но код - PowerShell):
$documents_path = 'D:\temp\in'
$out_path = Get-Item 'D:\temp\out'
$word_app = New-Object -ComObject Word.Application
# This filter will find .doc as well as .docx documents
Get-ChildItem -Path $documents_path -Filter *.doc | ForEach-Object {
$document = $word_app.Documents.Open($_.FullName)
$rtf_filename = "$(Join-Path $out_path $_.BaseName) + '.rtf'"
$document.SaveAs([ref] $rtf_filename, [ref] 6)
$document.Close()
}
$word_app.Quit()