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 Рейтинг 5.00 [1 Голос]

Комментарии   

 
0 #14 Maks 07.11.2023 16:56
Цитирую Александр:
Добрый день. Подскажите пожалуйста как сделать что бы файл не удалялся, а просто переносился в другую папку?


Обновил скрипт. Теперь есть удаление или перемещение в другую папку. Все настраивается.
Цитировать
 
 
+1 #13 Александр 24.10.2023 11:47
Добрый день. Подскажите пожалуйста как сделать что бы файл не удалялся, а просто переносился в другую папку?
Цитировать
 
 
0 #12 Maks 05.09.2023 00:52
Вот доработал скрипт под SumatraPdf, мониторит 2 папки (можно больше), отправляет на принтер привязанный по имени к папке, с опциями для этого принтера. Скачать можно тут https://drive.google.com/file/d/1VusvW7p4lRpyQa7hSslkexU7e0lkll6T/view?usp=drive_link
Цитировать
 
 
0 #11 Никита 20.03.2023 09:55
Подскажите пожалуйста, почему один документ печатается несколько раз. Как сделать так чтобы печаталось только один раз?
Цитировать
 
 
0 #10 APL 24.01.2023 07:17
в ближайшем будущем мне под линуксом понадобится. а так я в восторге. ещё раз спс.
Цитировать
 
 
0 #9 APL 24.01.2023 07:14
чел ты крут. спс огромное. это то что мне надо
Цитировать
 
 
0 #8 Виталий 04.05.2022 21:26
есть возможность отправить на все принтера которые установлены на компьютере или только на принтер который установлен по умолчанию
Цитировать
 
 
+1 #7 Алексей 27.03.2020 00:39
А чем запускать этот скрипт. Команду для запуска для лузеров плиз.
Цитировать
 
 
+2 #6 Максим 04.02.2020 11:55
Чтобы вообще без каких либо окон печатало используйте sumatra pdf
Цитировать
 
 
0 #5 Ришат 13.08.2019 09:39
Когда закидываю файл на печать , данный файл перед тем как напечатать на секунду открывает пдф и закрывает после чего печает. Нас в кабинете сидит 5 человек, человеку у которого стоит скрипт данное открытие мешает. как сделать так чтоб файл не открывался а сразу печатал
Цитировать
 

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