Windows: Скрипт для автоматической печати документов из папки

Наверное, одна из самых частых проблем при работе на терминальном сервере -- проблемы при печати. Заставить работать старые принтеры под новыми операционками без танцев с бубном получается крайне редко. При наличии чужих серверов без административных прав, подключение принтеров выглядит совсем печальным процессом. Отсюда родился костыль вида: pdf-принтер настроенный на сохранение в определенную папку и скрипт, который мониторит эту папку и если в ней появляется файл с расширением pdf, отправляет его на печать, а потом удаляет.

 

В качестве pdf-принтера ваш покорный слуга использовал PDFCreator v1.7.3 (скачать можно отсюда). Вообще, подойдет любой pdf-принтер, PDFCreator мне просто привычнее.

В PDFCreator заходим Принтер --> Настройки --> Автосохранение. Ставим галку использовать автосохранение и выбираем папку куда будем сохранять.

В скрипте указываем туже папку что и в настройках PDFCreator.

Текст VBS-скрипта:


Option Explicit : Dim objWord, objDoc, wssh, objFS, objShell, objPath, objFolder, objItem

Set wssh = CreateObject("WScript.Shell")
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objPath = objFS.GetFolder("d:\pdfprint\") 'Папка, из которой файлы отправляются на печать

Do
  PrintDelInFolder objPath
  WScript.Sleep 1000 ' Частота проверки папки -- 1 секунда
Loop

Sub PrintDelInFolder(objFolder)
    For Each objItem In objFolder.Files
        If StrComp(objFS.GetExtensionName(objItem.Name), "pdf", vbTextCompare) = 0 Then
                With wssh
            WScript.Sleep 1000
                    On Error Resume Next
            dim f
            f = Cstr(objItem.Path+".pdf")
            objFS.MoveFile objItem.Path, f
            If err.number=0 then
                Set objShell = CreateObject("Shell.Application")       
                objShell.ShellExecute f, "vbHide", "", "print", 0
                set objShell = nothing
                err.Clear
                Do
                WScript.Sleep 5000
                objFS.DeleteFile f ,true
                        Loop While objFS.FileExists(f)
                err.Clear
            End If
            On Error Goto 0
        End With
        End If
    Next
End Sub
WScript.Quit 0


Скачать скрипт можно отсюда.

 

 
1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 [0 Голоса (ов)]

Комментарии   

 
0 #5 Ришат 13.08.2019 09:39
Когда закидываю файл на печать , данный файл перед тем как напечатать на секунду открывает пдф и закрывает после чего печает. Нас в кабинете сидит 5 человек, человеку у которого стоит скрипт данное открытие мешает. как сделать так чтоб файл не открывался а сразу печатал
Цитировать
 
 
0 #4 Sysadmin 11.06.2019 11:55
Цитирую Евгений:
А есть возможность дописать скрипт так, что бы можно было распечатать этот же документ 2 раза, т.е. копия, т.к. приходится делать переброс документа 2 раза. Если подскажите строчку кода, буду благодарен. И еще, так же можно печатать документы с вашего кода в других форматах, это приятно удивило. Т.е. я указал xls файлы и печать пошла на основной принтер без PDF принтера


За печать отвечает строчка:
objShell.ShellExecute f, "vbHide", "", "print", 0

Если хотите чтобы документ печатался два раза, просто продублируйте её:
objShell.ShellExecute f, "vbHide", "", "print", 0
objShell.ShellExecute f, "vbHide", "", "print", 0
Цитировать
 
 
0 #3 Евгений 10.06.2019 22:17
А есть возможность дописать скрипт так, что бы можно было распечатать этот же документ 2 раза, т.е. копия, т.к. приходится делать переброс документа 2 раза. Если подскажите строчку кода, буду благодарен. И еще, так же можно печатать документы с вашего кода в других форматах, это приятно удивило. Т.е. я указал xls файлы и печать пошла на основной принтер без PDF принтера
Цитировать
 
 
0 #2 Sysadmin 22.08.2016 11:46
Цитирую Максимов Максим:


- комментарии Вконтакте кажется не работают

Проверил комменты. У меня работают.
Цитировать
 
 
0 #1 Максимов Максим 19.08.2016 14:01
Полезные земетки.
Когда-то писал подобный batch-скрипт - http://pastebin.com/hLqsLwgv

- комментарии Вконтакте кажется не работают
Цитировать
 

Добавить комментарий