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

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

Ответить
Настройки темы
CMD/BAT - Печать всех файлов pdf, doc, docx, xls, xlsx из папки

Аватара для Sisin

Старожил


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

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


Приветствую.

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

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

Отправлено: 14:03, 01-03-2019

 

Ветеран


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

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


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

Отправлено: 19:20, 01-03-2019 | #2



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

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


Аватара для Sisin

Старожил


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

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


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

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

Отправлено: 20:16, 01-03-2019 | #3


Ветеран


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

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


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

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

Цитата:
2Printer - Free Version
File: 2printer-free-setup.exe (47.6 MB)
P.S. Мне даже интересно, чего они там в пятьдесят мегабайт насовали.

P.P.S. Посмотрел .

Sisin, извлеките содержимое 2printer-free-setup.exe посредством innounp.exe. Запустите на целевой машине файл 2Printer.exe с параметром /install. Рядом с 2Printer.exe будет сгенерирован файл 2printer-install.ini со специфичным содержимым. Пользуйте 2Printer.exe.

P.P.P.S. По-моему, сто тридцать мегабайт — это чересчур для такой простой задачи.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:31, 01-03-2019 | #4


Аватара для Sisin

Старожил


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

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


А как такой вариант 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
'=============================================================================
Нашел на другом сайте.

Отправлено: 21:46, 01-03-2019 | #5


Ветеран


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

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


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

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

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

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

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

Отправлено: 23:40, 01-03-2019 | #6


Аватара для Sisin

Старожил


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

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


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

Отправлено: 00:33, 02-03-2019 | #7


Ветеран


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

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


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

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

Отправлено: 01:51, 05-03-2019 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Печать pdf-файлов из командной строки. Michael Скриптовые языки администрирования Windows 6 06-02-2019 10:18
2012 R2 - [решено] В одной учетной записи не открываются файлы *.doc *.xls (При этом все хорошо с *.docx alexwci Windows Server 2012/2012 R2 9 20-12-2018 11:20
CMD/BAT - Переименование файлов .doc в .docx Falcon99 Скриптовые языки администрирования Windows 12 07-08-2018 15:13
CMD/BAT - [решено] Пересохранить документы из DOC в DOCX NikolayHAOS Скриптовые языки администрирования Windows 6 19-08-2017 12:22
Разное - [решено] Резервное копирование файлов doc и xls. dzekka Microsoft Windows 2000/XP 2 28-01-2011 13:09




 
Переход