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 #2 Sysadmin 22.08.2016 11:46
Цитирую Максимов Максим:


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

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

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

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