1

Тема: VBS: Автоматическая печать из указанной папки с последующим удалением

Доброго времени суток.

К сожалению до программирования не дорос пока, но столкнулся с одной не большой проблемой. Мне необходимо автоматически распечатывать doc и pdf файлы из указанной папки. Програмка должна мониторить состояние папки, указанную мною, и  как только файл попадает в папку она должна его распечатать а затем удалить из папки. Так называемая "Очередь печати")).  Облазил сеть ничего не нашел(. Если есть возможность помогите.

P. S. В VBScript'ах не разбираюсь.  Подскажите как устанавливать скрипты? Или где об этом почитать.

Заранее благодарен, форумчанин-нуб):D

2 (изменено: Lucky, 2010-04-14 09:27:28)

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Привет!   Скрипт распечатывет документы Microsoft Word (.doc) из указанной папки (в примере d:\doc\) с последующим их удалением. Сделал так, что скрипт будет каждый час спрашивать завершать ли свою работу... можете убрать это условие по вашему усмотрению.

lemuriec пишет:

В VBScript'ах не разбираюсь...

Надо будет скопировать код скрипта и сохранить его в любом текстовом редакторе в файл формата vbs (Печать.vbs к примеру).

Option Explicit : Dim objWord, objDoc, wssh, objFS, objPath, objFolder, objItem, ques
Const wdDoNotSaveChanges    =  0
Const wdPromptToSaveChanges = -2
Const wdSaveChanges         = -1

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

Do
  PrintDelInFolder objPath
  WScript.Sleep 1000
  If Minute(Time)=0 and Second(Time)<5 then 'условие проверки времени для вывода на экран вопроса о завершении своей работы
     ques=wssh.Popup("Не желаете завершить работу скрипта автопечати документов?"&vbCrLf&"Следующий запрос будет через час...",, "Скрипт автопечати | Lucky edited", 36)
     if ques=6 then WScript.Quit
     WScript.Sleep 5000
  End If
Loop

Sub PrintDelInFolder(objFolder)
    For Each objItem In objFolder.Files
        If StrComp(objFS.GetExtensionName(objItem.Name), "doc", vbTextCompare) = 0 Then
            With WScript.CreateObject("Word.Application")
                Set objDoc = .Documents.Open(objItem.Path, False, True, False)
                objDoc.PrintOut False
                .Quit
                Set objDoc = Nothing
                WScript.Sleep 500
                objFS.DeleteFile objItem.Path ',true 'если надо удалять и доки с атрибутом "Только чтение" - уберите символ ' перед true
            End With
        End If
    Next
End Sub

Set objWord = Nothing
WScript.Quit 0
Стремление - залог успеха

3

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Спасибо большое за старания...но возникла какая то ошибка.

"Сервер сценариев Windows/

Сценарий: C:Doc and Settings\_\Рабочий стол\print_from.vbs
Строка 24
Символ 17
Ошибка: не верно указаны путь или имя документа.
Попробуйте выполнить следующие действия:

Убедитесь что путь введен правильно
Выберите команду "Открыть" в меню файл и выберите нужный файл из списка. (\\192.168.0.1\>1I0O\...\Print.doc)
Код  800А1499
Источник MS WORD"

Возможно ли это потому что папка из которой надо печатать висит на сервере??? Что делать?

Заранее спасибо)

4 (изменено: Lucky, 2010-04-14 09:52:28)

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

lemuriec пишет:

Возможно ли это потому что папка из которой надо печатать висит на сервере???

Скорей всего так и есть. Проверял локально - работает.
Вы покажите как вводите адрес к папке на сервере

P.S: А вы уверены что у скрипта есть права на доступ к файлам сервера? И тем более на удаление файлов оттуда...

Стремление - залог успеха

5

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Ребят я наверное наглею.. а можно туда добавить еще и Excel файлы?... Я забыл про них совсем(

Извиняюсь....заранее спасибо...

6

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Да локально работает. Адрес следующий  "\\Servermon\общая\ОТДЕЛ ЭКОНОМИЧЕСКОГО АНАЛИЗА И ПРОГНОЗИРОВАНИЯ\Ochered"

7

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

У скрипта не знаю. Но на сервере нет пароля. и я спокойно сам могу удалять файлы с сервера. Может в скрипте это надо где то прописать? Я извиняюсь... я в программировании мало что понимаю)) наверное для многих мои слова кажутся смешными)) и все таки как это решить?

8 (изменено: Lucky, 2010-04-14 11:35:45)

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

lemuriec пишет:

Адрес следующий  "\\Servermon\общая\ОТДЕЛ ЭКОНОМИЧЕСКОГО АНАЛИЗА И ПРОГНОЗИРОВАНИЯ\Ochered"

Странно, но у меня аналогичное работает... Полагаю у вас в компьютерах установлены Microsoft Office...

Вот подобие на Excel, остается соединить и отшлифовать...

Option Explicit : Dim objWord, objDoc, wssh, objFS, objPath, objFolder, objItem, ques
Const wdDoNotSaveChanges    =  0
Const wdPromptToSaveChanges = -2
Const wdSaveChanges         = -1

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

Do
  PrintDelInFolder objPath
  WScript.Sleep 1000
  If Minute(Time)=0 and Second(Time)<5 then 'условие проверки времени для вывода на экран вопроса о завершении своей работы
     ques=wssh.Popup("Не желаете завершить работу скрипта автопечати документов?"&vbCrLf&"Следующий запрос будет через час...",, "Скрипт автопечати | Lucky edited", 36)
     if ques=6 then WScript.Quit
     WScript.Sleep 5000
  End If
Loop

Sub PrintDelInFolder(objFolder)
    For Each objItem In objFolder.Files
        If StrComp(objFS.GetExtensionName(objItem.Name), "xls", vbTextCompare) = 0 Then
            With WScript.CreateObject("Excel.Application")
                Set objDoc = .Workbooks.Open(objItem.Path)
                objDoc.PrintOut
                .Quit
                Set objDoc = Nothing
                WScript.Sleep 500
                objFS.DeleteFile objItem.Path ',true 'если надо удалять и доки с атрибутом "Только чтение" - уберите символ ' перед true
            End With
        End If
    Next
End Sub

Set objWord = Nothing
WScript.Quit 0
Стремление - залог успеха

9

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Спасибо Вам большое))

Единственное с сервера не возможно распечатать(... Но я кажется придумал решение этой проблемы)
Програмка будет копировать файлы с сервера на локалку, а оттуда уже будет работать Ваш скрипт))

Ан тут можно как то выражать благодарность участнику форума?)

10 (изменено: Lucky, 2010-04-14 15:18:08)

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Пожалуйста! Рад помочь...

lemuriec пишет:

... Но я кажется придумал решение этой проблемы)
Програмка будет копировать файлы с сервера на локалку, а оттуда уже будет работать Ваш скрипт))

Я догадался (увидел следующую вашу тему)

Стремление - залог успеха

11

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Очень полезный скрипт, спасибо большое!!!!
А как избавиться от постоянно всплывающего окна с вопросом о прекращении работы скрипта. Хочу чтобы он работал постоянно или прекращал работу через 3 часа, но без диалога с оператором

12

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

1)

Sandril пишет:

Очень полезный скрипт, спасибо большое!!!!
А как избавиться от постоянно всплывающего окна с вопросом о прекращении работы скрипта. Хочу чтобы он работал постоянно...

Просто уберите в скрипте участок кода:

  If Minute(Time)=0 and Second(Time)<5 then 'условие проверки времени для вывода на экран вопроса о завершении своей работы
     ques=wssh.Popup("Не желаете завершить работу скрипта автопечати документов?"&vbCrLf&"Следующий запрос будет через час...",, "Скрипт автопечати | Lucky edited", 36)
     if ques=6 then WScript.Quit
     WScript.Sleep 5000
  End If

2)

Sandril пишет:

...или прекращал работу через 3 часа, но без диалога с оператором

пункт №1 плюс замените в скрипте Do на:

Dim t1
t1=timer
Do while (timer-t1)/3600 < 3

p.s: Не забудьте убрать на первой строке определение переменной ques

Стремление - залог успеха

13

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Спасибо большое!!!!
Всё работает, все довольные

14 (изменено: msc_nv, 2011-01-11 13:43:33)

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

А как бы сделать чтобы программа не завершала работу? И что бы печатала, по две копии каждого файла?

15

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Подскажите пожалуйста, если кто слышит
Как подредактировать этот скрипт автоматической печати для распечатывания PDF файлов?

16

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

а как переделать этот скрипт под pdf файлы

17

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Под печать PDF потребуются сторонние средства. Вы готовы к этому?

18

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Раньше adobereader с ключом /p печатал файлы, сейчас нет ?

Времени не хватает... :-(

19

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

Печатать-то, может и печатал, а вот отследить момент завершения печати не удавалось. То ли он не закрывался в конце.

Поищите, уже было.

20

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

AcroReader работает с джабоскриптом в усерспейсе

Я конечно далек от мысли... (с)

21

Re: VBS: Автоматическая печать из указанной папки с последующим удалением

smaharbA пишет:

AcroReader работает с джабоскриптом в усерспейсе

Если не трудно, опишите пожалуйста подробнее, или укажите ссылку.