Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Вставить текст и распечатать первую страницу

Ответить
Настройки темы
CMD/BAT - Вставить текст и распечатать первую страницу

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте уважаемые программисты!

Сразу прошу прощения, если попал не в ту ветку. Помогите!

Есть: Каталог с архивами. В каждом архиве есть файл *.doc и куча другого мусора.

Для того, чтобы иметь представление о архивах
Необходимо: 1. в начало файла *.doc вставить строчку с именем архива
2. Распечатать только первую страницу документа.

Дополнительно: если возможно - аналогично с файлом *.pdf

Спасибо за внимание.

Отправлено: 18:28, 14-05-2013

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


DOC- и PDF-файлы - бинарные, а не текстовые файлы. DOC-файлы, к тому же, - по своей сути специальные ZIP-архивы с расширением .doc. Поэтому только средствами CMD/BAT вставить что-либо в начало файла, не испортив его, нельзя. Вставить текст в конец файла - допустимо, но зтот текст не будет читаться при открытии файла в MS Word или WordPad, хотя каким-то идентификатором может служить.

Отправлено: 19:32, 14-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


voha, как правильно заметил коллега Georgio, в рамках заявленной категории решить Вашу задачу принципиально невозможно. Требуется Automation-клиент: WSH, PoSH, AutoIt, с недавних пор — AutoHotKey и т.п. Печать *.pdf — это вообще сказка.

Цитата voha:
1. в начало файла *.doc вставить строчку с именем архива »
Типы архивов приведите.

Цитата Georgio:
DOC-файлы, к тому же, - по своей сути специальные ZIP-архивы с расширением .doc. »
Отнюдь. Вы путаете с новым форматом, появившемся в Microsoft Office 2007. До того — бинарные compaund-файлы.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:51, 14-05-2013 | #3


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Требуется Automation-клиент »
Что-бы Вы посоветовали в рамках поставленной задачи?

Цитата Iska:
Типы архивов приведите »
rar, zip, arj и проч. Это не принципиально.

Отправлено: 10:34, 15-05-2013 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата voha:
Это не принципиально. »
Это очень даже принципиально.

Цитата voha:
Что-бы Вы посоветовали в рамках поставленной задачи? »
Я бы посоветовал, например, WSH:
читать дальше »
Код: Выделить весь код
Option Explicit

Const WindowsFolder   = 0
Const SystemFolder    = 1
Const TemporaryFolder = 2

Const WshRunning  = 0
Const WshFinished = 1
Const WshFailed   = 2

Const wdDoNotSaveChanges    =  0
Const wdPromptToSaveChanges = -2
Const wdSaveChanges         = -1

Const wdPrintFromTo         = 3
Const wdPrintRangeOfPages   = 4


Dim strFolder

Dim objFile

Dim objWshShell
Dim objWshExec
Dim objRegExp

Dim strOut
Dim strFileName
Dim strTempFile

Dim objWord


strFolder = "E:\Песочница\0254"

Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objRegExp   = WScript.CreateObject("VBScript.RegExp")
Set objWord     = Nothing

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists(strFolder) Then
		For Each objFile In .GetFolder(strFolder).Files
			Select Case LCase(.GetExtensionName(objFile.Name))
				Case "rar", "zip", "arj"
					WScript.Echo "Archive:  " & objFile.Name
					
					Set objWshExec = objWshShell.Exec("""%ProgramFiles%\7-Zip\7z.exe"" l -sccWIN """ & objFile.Path & """ *.doc")
					
					strOut = ""
					
					If objWshExec.Status <> WshFailed Then
						Do
							strOut = strOut & objWshExec.StdOut.ReadAll()
							objWshExec.StdErr.ReadAll()
						Loop Until objWshExec.Status = WshFinished
						
						objRegExp.Pattern = "\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} .{5} +\d+ +\d+ +(.+\.doc)"
						
						If objRegExp.Test(strOut) Then
							strFileName = objRegExp.Execute(strOut).Item(0).SubMatches(0)
							WScript.Echo "Document: " & strFileName
							
							If objWshShell.Run("""%ProgramFiles%\7-Zip\7z.exe"" e -sccWIN """ & objFile.Path & """ -y -o" & .GetSpecialFolder(TemporaryFolder) & " """ & strFileName & """", 1, True) = 0 Then
								strTempFile = .GetFile(.BuildPath(.GetSpecialFolder(TemporaryFolder), strFileName)).Path
								
								OpenAndPrint strTempFile, objFile.Path
								
								.DeleteFile strTempFile, True
							Else
								WScript.Echo "Can't extract [" & strFileName & "] from archive [" & objFile.Path & "]."
							End If
							
							WScript.Echo
						End If
					Else
						WScript.Echo "Can't execute [""%ProgramFiles%\7-Zip\7z.exe"" l -sccWIN """ & objFile.Path & """ *.doc]."
					End If
					
					Set objWshExec = Nothing
			End Select
		Next
	Else
		WScript.Echo "Folder [" & strFolder & "] not found."
	End If
End With

If Not objWord Is Nothing Then
	objWord.Quit wdDoNotSaveChanges
	Set objWord = Nothing
End If

Set objRegExp   = Nothing
Set objWshShell = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub OpenAndPrint(strPath2File, strPath2Archive)
	If objWord Is Nothing Then
		Set objWord = WScript.CreateObject("Word.Application")
	End If
	
	With objWord.Documents.Open(strPath2File, False, True, False)
		With .Paragraphs.Item(1).Range
			.InsertParagraphBefore
			.InsertBefore strPath2Archive
		End With
		
		.PrintOut True, False, wdPrintFromTo, "", "1", "1"
		
		Do
			WScript.Sleep 100
		Loop Until objWord.BackgroundPrintingStatus = 0
		
		.Close wdDoNotSaveChanges
	End With
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:17, 16-05-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Вставить текст и распечатать первую страницу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Как можно распечатать текст из такого электронного учебника.. Роман_Дубровский@vk Хочу все знать 5 18-04-2012 20:05
iMacros, вставить текст из файла Klaid Хочу все знать 0 06-03-2012 09:18
Вставить текст в форму morgan1991 AutoIt 1 26-11-2010 21:58
Вставить текст в необычную форму evg64 AutoIt 5 07-03-2010 01:00
Как вставить видео клип на веб страницу, помогите плс........ BlackB Вебмастеру 5 06-07-2008 19:06




 
Переход