Имя пользователя:
Пароль:
 | Правила  

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

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

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


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

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


Есть папка "C:\Обмен\!Бланки\Печать\" туда сотрудники копируют файлы формата .doc и .docx. Нужно распечатать все файлы doc и docx при запуске батника.

Цитата:
"C:\Program Files\Microsoft Office\Office14\WINWORD.EXE" *.doc /q /n /mFilePrintDefault /mFileExit
Пытался таким образом это провернуть, но печатает только один файл.(

Отправлено: 15:06, 03-09-2013

 

Аватара для sunnykey

Пользователь


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

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


Код: Выделить весь код
#Powershell script.
#Don't forget unlock script executing by 
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
#Save this file with ".ps1" extension
gci "C:\Обмен\!Бланки\Печать\*" | ? {($_.Name -like "*.doc") -or ($_.Name -like "*.docx")} | % {Start-Process $_.FullName -Verb Print}

-------
cmd умри, powershell живи=)
Powershel 4.0 microsoft.com/ru-ru/download/details.aspx?id=40855

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 03-09-2013 | #2



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

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


Ветеран


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

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


Почему не проще: «-Include "*.doc","*.docx"» при «Get-ChildItem»? Или не «$_.Name -match "^.*\.docx?$"» (последнее, конечно, не проще )?
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:00, 03-09-2013 | #3


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


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

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


А возможностями обычного .bat не получится? Просто с powershell вообще не знаком

Отправлено: 16:59, 03-09-2013 | #4


Ветеран


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

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


Цитата Аэровафли:
А возможностями обычного .bat не получится? »
Аэровафли, пакетные файлы не умеют ShellExecute, всё одно понадобится утилита для этого.

Цитата Аэровафли:
Просто с powershell вообще не знаком »
1. Установить PowerShell (если не идёт в комплекте).
2. Однократно разрешить исполнение неподписанных скриптов, например:
Цитата sunnykey:
Код: Выделить весь код
Set-ExecutionPolicy RemoteSigned
»
3. Сохранить код в файл с расширением «.ps1»:
Цитата sunnykey:
#Save this file with ".ps1" extension »
4. Пользоваться.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:14, 03-09-2013 | #5


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


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

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


Спасибо огромное!
Можно попросить еще два косметических изменения к скрипту? Могу пару бутылочку пива накинуть на телефон взамен ,))
1) Удалять все файлы в директории "Печать" после запуска скрипта и проведенной печати
2) Запускать печать в фоном режиме (если это конечно возможно)

Отправлено: 10:11, 04-09-2013 | #6


Ветеран


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

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


Цитата Аэровафли:
1) Удалять все файлы в директории "Печать" после запуска скрипта и проведенной печати »
Зачем все? Только обработанные.

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

Dim strTargetFolder
Dim strComputer

Dim objSWbemServicesEx
Dim objSWbemEventSource
Dim objSWbemObjectEx_Event
Dim objSWbemObjectEx_CIM_DataFile


strTargetFolder = "C:\Обмен\!Бланки\Печать"
strComputer     = "."

Set objSWbemServicesEx = GetObject("WinMgmts:\\" & 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
	Set objSWbemObjectEx_Event = objSWbemEventSource.NextEvent
	Set objSWbemObjectEx_CIM_DataFile = objSWbemServicesEx.Get(objSWbemObjectEx_Event.TargetInstance.PartComponent)
	
	WScript.Echo Now() & " |  | New file:    [" & objSWbemObjectEx_CIM_DataFile.Name & "]"
	
	Select Case UCase(objSWbemObjectEx_CIM_DataFile.Extension)
		Case "DOC", "DOCX"
			PrintByWord  objSWbemObjectEx_CIM_DataFile.Name
		Case "XLS", "XLSX"
			PrintByExcel objSWbemObjectEx_CIM_DataFile.Name
		Case Else
			' Nothing to do
	End Select
	
	WScript.Echo Now() & " |  | Delete file: [" & objSWbemObjectEx_CIM_DataFile.Name & "]"
	objSWbemObjectEx_CIM_DataFile.Delete
Loop

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

'=============================================================================
Sub PrintByWord(strFileName)
	Const wdDoNotSaveChanges = 0
	
	Dim objWord
	Dim objDoc
	
	Set objWord = WScript.CreateObject("Word.Application")
	
	WScript.Echo Now() & " |  | Print file:  [" & strFileName & "]"
	
	With objWord
		Set objDoc = .Documents.Open(strFileName, False, True, False)
		
		objDoc.PrintOut True
		
		Do
			WScript.Sleep 500
		Loop Until .BackgroundPrintingStatus = 0
		
		Set objDoc = Nothing
		
		.Quit wdDoNotSaveChanges
	End With
	
	Set objWord = Nothing
End Sub
'=============================================================================

'=============================================================================
Sub PrintByExcel(strFileName)
	Dim objExcel
	Dim objWorkbook
	
	Set objExcel = WScript.CreateObject("Excel.Application")
	
	WScript.Echo Now() & " |  | Print file:  [" & strFileName & "]"
	
	With objExcel
		Set objWorkbook = .Workbooks.Open(strFileName, 0, True)
		
		objWorkbook.PrintOut
		objWorkbook.Saved = True
		
		Set objWorkbook = Nothing
		
		.Quit
	End With
	
	Set objExcel = Nothing
End Sub
'=============================================================================

Следит за изменениями в каталоге.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:53, 04-09-2013 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Запуск скрипта из текущей директории lampich Программирование и базы данных 0 28-12-2012 23:56
[решено] Как убрать лишнии директории из библиотеки Windows 7 lunar Хочу все знать 3 02-10-2012 11:30
CMD/BAT - [решено] Переход из одного батника в другой с изменением рабочей директории. RomanLis Скриптовые языки администрирования Windows 1 12-04-2012 16:59
[решено] Запуск программы из [GuiRunOnce] без $ОЕМ$ директории Nun-Nun Автоматическая установка Windows 2000/XP/2003 2 08-02-2011 16:32
Win32 API - Копирование всех файлов из директории DaRiYs Программирование и базы данных 4 03-09-2009 23:36




 
Переход