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

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

Ответить
Настройки темы
CMD/BAT - Печать файлов из каталогов на принтеры BAT-командами

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


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

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


Подскажите, пожалуйста, как лучше, проще, оптимальнее осуществить печать из каталогов ?
Например, используя BAT - файл.

Дано, например, на сервере (Windows Server 2008):
1. 5 принтеров в сети и 10 сетевых каталогов
2. Периодически, в каждый из каталогов попадают файлы (по одному или по несколько)

Нужно:
Распечатывать файлы из каждого каталога на определенный принтер и затем удалять распечатанный файл.
Если в каталог попадает сразу несколько файлов, то каждый из этих файлов по очереди нужно распечатать и затем удалить.

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

Отправлено: 16:22, 15-11-2013

 

Ветеран


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

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


Какие именно файлы?

Отправлено: 17:39, 15-11-2013 | #2



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

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


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


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

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


Текстовые файлы.

Отправлено: 22:33, 17-11-2013 | #3


Ветеран


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

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


Смотрите примерную болванку кода:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strTargetFolder
Dim strPrinterName

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemEventSource
Dim objSWbemObjectEx


strTargetFolder = "C:\Обмен"
strPrinterName  = "HP LaserJet 1200 Series PCL"

strComputer     = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
	"SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
	"TargetInstance ISA 'CIM_DirectoryContainsFile' AND " & _
	"TargetInstance.GroupComponent = 'Win32_Directory.Name=""" & Replace(strTargetFolder, "\", "\\\\") & """'" _
)


WScript.Echo "Monitor files creation and Print documents in [" & strTargetFolder & "]..."

Do
	With objSWbemServicesEx.Get(objSWbemEventSource.NextEvent.TargetInstance.PartComponent)
		WScript.Echo Now() & " | > | New file:    [" & .Name & "]"
		
		Select Case UCase(.Extension)
			Case "TXT"
				PrintByNotepad .Name, strPrinterName
			Case Else
				' Nothing to do
		End Select
		
		WScript.Echo Now() & " | v | Delete file: [" & .Name & "]"
		.Delete
	End With
Loop

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

'=============================================================================
Sub PrintByNotepad(strFileName, strPrinterName)
	WScript.CreateObject("WScript.Shell").Run """%SystemRoot%\System32\notepad.exe"" /pt """ & strFileName & """ """ & strPrinterName & """", 0, True
	
	WScript.Echo Now() & " | # | Print file:  [" & strFileName & "]"
End Sub
'=============================================================================

Детали в виде «несколько каталогов и несколько принтеров» подлежат разъяснению на предмет их связи.
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:33, 21-11-2013 | #4


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


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

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


Iska, спасибо. Попробую.

Отправлено: 14:56, 26-11-2013 | #5


Аватара для Elven

Ветеран


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

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


Iska, а по мне так все понятно: два варианта вижу ясно
вариант номер раз.
дано
есть папки DIR1.1 DIR1.2, DIR2.1, DIR2.2, DIR2.3, DIR3 ... DIR100500.100500
есть принтеры PRINT1, PRINT2, PRINT3 ... PRINT100500
нужно
если файл упал в папки DIR1.1, DIR1.2 значит распечатать его на PRINT1, если в DIR2.1, DIR2.2, DIR 2.3 - на принтере PRINT2 и т.д. после распечатки файл удалить, в случае падения нескольких файлов распечатать их один за другим и точно так же удалить.
Вариант номер два
дано
есть папки DIR1, DIR2, DIR3 ... DIR100500
есть принтера PRINT1, PRINT2, PRINT3
нужно
если файл упал в вышеуказанные папки, его нужно распечатать на всех принтерах после распечатки файл удалить, в случае падения нескольких файлов распечатать их один за другим и точно так же удалить.

дополнительно в обоих пунктах желательно указать с какой интенсивностью сыпятся файлы (достаточно ли проверять их наличие раз в минуту, пять минут, два часа, полгода)

alexansh, какой из вариантов правильный?
мне, откровенно говоря, больше нравится первый, но вероятнее второй.
з.ы. если правильно сформулировать вопрос, то 90% ответа в нем уже будет.

Отправлено: 15:20, 26-11-2013 | #6


Ветеран


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

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


Цитата Elven:
если файл упал в папки DIR1.1, DIR1.2 значит распечатать его на PRINT1, если в DIR2.1, DIR2.2, DIR 2.3 - на принтере PRINT2 »
Elven, а почему не наоборот ?


Цитата Elven:
дополнительно в обоих пунктах желательно указать с какой интенсивностью сыпятся файлы (достаточно ли проверять их наличие раз в минуту, пять минут, два часа, полгода) »
Не нужно. В скрипте опрос идёт каждые пять секунд.

Отправлено: 15:32, 26-11-2013 | #7


Аватара для Elven

Ветеран


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

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


Цитата Iska:
а почему не наоборот »
Iska, наоборот это как? если упал PRINT1 то все что было в папках DIR1.1, DIR1.2 печатать на PRINT2? Или какое наоборот имелось ввиду?
Цитата Iska:
Не нужно. В скрипте опрос идёт каждые пять секунд. »
не заметил... сейчас буду перечитывать

Отправлено: 15:55, 26-11-2013 | #8


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


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

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


Elven, мой вариант как раз похож на ваш 1-ый вариант - с одноименного каталога файлы печатаются на одноименный принтер.
Дело в том, что необходимое дублирование каких-либо нужных нам файлов происходит на этапе "вбрасывания" их в каталоги. Т.е., на этом этапе и происходит сортировка всех нужных нам сообщений. Например, если есть необходимость печати одного и того же файла на 2-х или 3-х принтерах, то этот файл и "вбрасывают" сразу и в 1-ый каталог, и, например, во 3-ой каталог, и в 5-ый, к примеру. А уже сами каталоги, в свою очередь жестко привязываются только к одноименным принтерам. Вот такая задача.

Там, правда, есть ещё и другая задачка, цель которой состоит в разборе каждого файла и делении его на несколько более простых файлов из-за того, что в более крупном исходном файле содержится много однотипных сообщений, имеющих один и тот же формат, но отличающихся, естественно, по объему и содержанию. И эти однотипные сообщения нужно "вытаскивать" из больших файлов и затем их и распечатывать. Вот так.

Отправлено: 19:47, 26-11-2013 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Печать на расшаренные принтеры в домене Future09 Microsoft Windows 2000/XP 9 12-10-2011 14:44
CMD/BAT - [решено] программирование bat на удаление файлов из папки petr_al Скриптовые языки администрирования Windows 8 08-03-2011 02:11
CMD/BAT - [решено] Копирование ТОЛЬКО файлов из дерева каталогов highroller Скриптовые языки администрирования Windows 2 29-03-2010 11:28
Печать файлов из командной строки Loki3D Microsoft Windows NT/2000/2003 4 12-07-2007 08:55




 
Переход