1

Тема: CMD: Просмотр текста с альбомной ориентацией страниц

С помощью этого кода можно быстро подготовить текстовый файл для просмотра в MS WORD.
Ориентация страниц на просмотр и печать будет альбомная.


@echo off
for %%i in (%*) do call :myDoc %%i

:myDoc
del %1.doc
call :head  > %1.doc
type %1 >>  %1.doc

goto :eof
: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^>

2

Re: CMD: Просмотр текста с альбомной ориентацией страниц

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()

3

Re: CMD: Просмотр текста с альбомной ориентацией страниц

Из банка приходит ежедневно какое-то число широких и длинных файлов. Таблицы отформатированы  псевдографикой.
Файлы не грузятся в систему. Они нужны для получения дополнительной информации.

Когда надо распечатать часть текста возникает необходимость в минимальном форматировании текста:
альбомная ориентация листа (блок с классом WordSection1) ,
Моноширинный шрифт (тег pre) ,
>132 знака в строке (8.0 pt)

Если кодировка будет отличная от cp1251 (charset=windows-1251") будем  менять charset.
Для DOS  надо использовать charset=cp866.

CMD размещен в Папке SendTO. Исполнитель выделяет нужные файлы -> Отправить ->CMD