Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Печать всех файлов pdf, doc, docx, xls, xlsx из папки (http://forum.oszone.net/showthread.php?t=339479)

Sisin 01-03-2019 14:03 2860704

Печать всех файлов pdf, doc, docx, xls, xlsx из папки
 
Приветствую.

Ни у кого в загашнике нет готового bat или cmd с печатью в фоне (без открытия окон) всех файлов pdf, doc, docx, xls, xlsx из папки, в которой bat или cmd помещен?

Может есть аналог приложения 2printer не требующий установки? Или может еще как?

Iska 01-03-2019 19:20 2860744

Sisin, пакетного файла нет и быть не может. Может быть скрипт на WSH/AutoIt/PowerShell или какое-нибудь приложение на ЯВУ. Одна тонкость: нормально печатать таким способом посредством умолчального Acrobat Reader не получится, нужна будет ещё одна утилита командной строки, либо какое-нибудь иное приложение.

Sisin 01-03-2019 20:16 2860758

Цитата:

Цитата Iska
Sisin, пакетного файла нет и быть не может. Может быть скрипт на WSH/AutoIt/PowerShell или какое-нибудь приложение на ЯВУ. Одна тонкость: нормально печатать таким способом посредством умолчального Acrobat Reader не получится, нужна будет ещё одна утилита командной строки, либо какое-нибудь иное приложение. »

Я это предполагал, поэтому спросил про консольное приложение 2printer. Все бы ничего, но оно требует установки, а мне нужен переносной вариант.

Может кто уже решил такую задачу или знает консольный аналог 2printer.

Iska 01-03-2019 21:31 2860771

Sisin, никакой связи между gui/console и installable/portable не существует.

Цитата:

Цитата Sisin
Все бы ничего, но оно требует установки, а мне нужен переносной вариант. »

Отчего так?

Цитата:

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. По-моему, сто тридцать мегабайт — это чересчур для такой простой задачи.

Sisin 01-03-2019 21:46 2860778

А как такой вариант 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
'=============================================================================

Нашел на другом сайте.

Iska 01-03-2019 23:40 2860805

Цитата:

Цитата Sisin
А как такой вариант VBS? »

Вы ставите меня в неловкое положение ;). Ну, что автор может сказать о своём собственном коде?! :lol:

1. Для Вашего случая он нуждается в некоторой переделке, заключающейся в том, что приведённый код рассчитан на обработку документов из сформированного списка в текстовом файле, путь к которому передаётся скрипту в качестве параметра.

2. Приведённый код являлся упрощением более сложного варианта скрипта, который «следил» за содержимым каталога, при появлении в нём новых документов печатал их и, по окончании процесса постановки задания в очередь печати, удалял/перемещал эти документы.

3. AcroRd32.exe не завершает свою работу по окончании процесса печати, но заказчика такой вариант вполне устраивал, посему для печати pdf-файлов был использован именно он, и именно в таком виде.

Вот как-то так.

Sisin 02-03-2019 00:33 2860828

Цитата:

Цитата Iska
Вы ставите меня в неловкое положение . Ну, что автор может сказать о своём собственном коде?! »

))))))))) Как тесен интернет.

Iska 05-03-2019 01:51 2861387

Цитата:

Цитата Sisin
Можно ли как-то заблокировать печать этой страницы? »

Полагаю, что нет.

Цитата:

Цитата Sisin
Или какой-то командой удалить его из очереди печати?? »

Можно не успеть удалить. Поскольку сначала задание ставится в очередь на печать, и лишь затем возникает событие об этом. И к тому времени, пока дойдёт очередь до обработки этого события, само задание уже запросто может быть отпечатано.


Время: 08:45.

Время: 08:45.
© OSzone.net 2001-