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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Автоматическая печать из папки (http://forum.oszone.net/showthread.php?t=339891)

Dreamer_UFA 28-03-2019 13:43 2865566

Автоматическая печать из папки
 
Доброго времени суток.

Прошу помощи элегантно реализовать печать документов из папки.
Скрипт который проверяет содержимое папки (input), при наличии файлов (pdf, doc, xls) - отправляет на печать и удаляет.

Прошу восполнить пробел в памяти. Раньше использовал, сейчас не могу вспомнить.
Гугл мне не забанили, решения есть. Может у кого то готовый скрипт есть и поделитесь ? :)

Iska 28-03-2019 14:38 2865571

Были здесь. На WSH и AutoIt. На PoSH не переделывали. Для PDF была желательна сторонняя утилита (для Adobe Reader'а), хотя, возможно, на PowerShell'е можно будет обойтись и без неё. Искать (и переделывать) пока некогда.

Dreamer_UFA 01-04-2019 11:55 2866185

В общем для себя решение нашел. Может кому то будет полезно.

Создаем папку на любом диске (в моем случае d:\doc)
Устанавливаем PDF Creator или подобный
Запускаем скрипт и ВУАЛЯ

Все файл .pdf что попадают в папку - идут на печать и удаляются.

Моя задача была печать ценников с web консоли МойСклад. Все работает.
Ценник сохраняется в папку и автоматически уходит на принтер этикеток.


Код:

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:\doc\") 'Папка, из которой производится печать

Do
  PrintDelInFolder objPath
  WScript.Sleep 1000
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

Всем спасибо.

Busla 02-04-2019 11:16 2866288

изобилие WScript.Sleep и "элегантно" - понятия несовместимые


Время: 21:19.

Время: 21:19.
© OSzone.net 2001-