Показать полную графическую версию : Печать всех файлов pdf, doc, docx, xls, xlsx из папки
Приветствую.
Ни у кого в загашнике нет готового bat или cmd с печатью в фоне (без открытия окон) всех файлов pdf, doc, docx, xls, xlsx из папки, в которой bat или cmd помещен?
Может есть аналог приложения 2printer не требующий установки? Или может еще как?
Sisin, пакетного файла нет и быть не может. Может быть скрипт на WSH/AutoIt/PowerShell или какое-нибудь приложение на ЯВУ. Одна тонкость: нормально печатать таким способом посредством умолчального Acrobat Reader не получится, нужна будет ещё одна утилита командной строки, либо какое-нибудь иное приложение.
Sisin, пакетного файла нет и быть не может. Может быть скрипт на WSH/AutoIt/PowerShell или какое-нибудь приложение на ЯВУ. Одна тонкость: нормально печатать таким способом посредством умолчального Acrobat Reader не получится, нужна будет ещё одна утилита командной строки, либо какое-нибудь иное приложение. »
Я это предполагал, поэтому спросил про консольное приложение 2printer. Все бы ничего, но оно требует установки, а мне нужен переносной вариант.
Может кто уже решил такую задачу или знает консольный аналог 2printer.
Sisin, никакой связи между gui/console и installable/portable не существует.
Все бы ничего, но оно требует установки, а мне нужен переносной вариант. »
Отчего так?
2Printer - Free Version
File: 2printer-free-setup.exe (47.6 MB)
P.S. Мне даже интересно, чего они там в пятьдесят мегабайт насовали.
P.P.S. Посмотрел :lol:.
Sisin, извлеките содержимое 2printer-free-setup.exe посредством innounp.exe. Запустите на целевой машине файл 2Printer.exe с параметром /install. Рядом с 2Printer.exe будет сгенерирован файл 2printer-install.ini со специфичным содержимым. Пользуйте 2Printer.exe.
P.P.P.S. По-моему, сто тридцать мегабайт — это чересчур для такой простой задачи.
А как такой вариант VBS?
Option Explicit
Const ForReading = 1
Dim objFSO
Dim objTS
Dim objWshShell
Dim objWord
Dim objDoc
Dim objExcel
Dim objWorkbook
Dim strListFileName
Dim strFileName
If WScript.Arguments.Count = 1 Then
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
strListFileName = WScript.Arguments.Item(0)
'WScript.Echo strListFileName
If objFSO.FileExists(strListFileName) Then
Set objTS = objFSO.OpenTextFile(strListFileName, ForReading)
Set objWord = Nothing
Set objExcel = Nothing
Do Until objTS.AtEndOfStream
strFileName = objTS.ReadLine()
'WScript.Echo strFileName
If objFSO.FileExists(strFileName) Then
Select Case UCase(objFSO.GetExtensionName(strFileName))
Case "DOC"
PrintDOC strFileName
Case "XLS"
PrintXLS strFileName
Case "PDF"
PrintPDF strFileName
Case Else
' Nothing to do
End Select
End If
Loop
If Not objWord Is Nothing Then
objWord.Quit
Set objWord = Nothing
End If
If Not objExcel Is Nothing Then
objExcel.Quit
Set objExcel = Nothing
End Select
objFSO.GetFile(strFileName).Name = objFSO.GetBaseName(strFileName) & "_printed." & objFSO.GetExtensionName(strFileName)
End If
Loop
Set objWshShell = Nothing
Set objFSO = Nothing
End If
WScript.Quit 0
'=============================================================================
'=============================================================================
Sub PrintDOC(strFileName)
Const wdDoNotSaveChanges = 0
If objWord Is Nothing Then
Set objWord = WScript.CreateObject("Word.Application")
End If
With objWord
Set objDoc = .Documents.Open(strFileName, False, True, False)
objDoc.PrintOut True
Do
WScript.Sleep 500
Loop Until .BackgroundPrintingStatus = 0
objDoc.Close wdDoNotSaveChanges
Set objDoc = Nothing
End With
End Sub
'=============================================================================
'=============================================================================
Sub PrintXLS(strFileName)
If objExcel Is Nothing Then
Set objExcel = WScript.CreateObject("Excel.Application")
End If
With objExcel
.AskToUpdateLinks = False
.Interactive = False
.DisplayAlerts = False
Set objWorkbook = .Workbooks.Open(strFileName, 0, True)
objWorkbook.PrintOut
objWorkbook.Close False
Set objWorkbook = Nothing
End With
End Sub
'=============================================================================
'=============================================================================
Sub PrintPDF(strFileName)
objWshShell.Run """C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\AcroRd32.exe"" /h /p """ & strFileName & """", 0, True
End Sub
'=============================================================================
Нашел на другом сайте.
А как такой вариант VBS? »
Вы ставите меня в неловкое положение ;). Ну, что автор может сказать о своём собственном коде?! :lol:
1. Для Вашего случая он нуждается в некоторой переделке, заключающейся в том, что приведённый код рассчитан на обработку документов из сформированного списка в текстовом файле, путь к которому передаётся скрипту в качестве параметра.
2. Приведённый код являлся упрощением более сложного варианта скрипта, который «следил» за содержимым каталога, при появлении в нём новых документов печатал их и, по окончании процесса постановки задания в очередь печати, удалял/перемещал эти документы.
3. AcroRd32.exe не завершает свою работу по окончании процесса печати, но заказчика такой вариант вполне устраивал, посему для печати pdf-файлов был использован именно он, и именно в таком виде.
Вот как-то так.
Вы ставите меня в неловкое положение . Ну, что автор может сказать о своём собственном коде?! »
))))))))) Как тесен интернет.
Можно ли как-то заблокировать печать этой страницы? »
Полагаю, что нет.
Или какой-то командой удалить его из очереди печати?? »
Можно не успеть удалить. Поскольку сначала задание ставится в очередь на печать, и лишь затем возникает событие об этом. И к тому времени, пока дойдёт очередь до обработки этого события, само задание уже запросто может быть отпечатано.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC