Batyа, как говорил очень любимый мной Ниро Вульф "Никогда не отказывайтесь от заслуженного гонорара". Но если все таки ты не хочешь их брать, то я знаю куда их деть! Нанять кого-то, кто решит на форуме проблему спама!те 300 долл которые Вам не нужны куда скажете туда и перешлю
Задачка для ТС за деньги
Модераторы: CaptainFlint, Nik, d-view, Моторокер, Avada
2lamicard А в самом деле, не мог бы ты немного формализовать задачу? А заодно описать рабочую среду. Хотя бы приблизительно. Сколько человек будет пользоваться этим? Сколько файлов ежедневно печатается? Объемы файлов, дисков? Общий объем печати в страницах?

каждая машинка держит максимум 8 принтеров на usb - сетка обычная 100 мб/сек. максимальное количество принтеров 30. машинки мощные от 2.4 до 3.4 мгц нецелеронов
принтера струйные печатают изображения в растре и кривых - т.е. без шрифтов.
сейчас это делается ручками - причем криво - иной раз с винчестера пускается печать - иной раз по локалке... если еще дизайнер напартачит с качеством изображения то 20 листиков могут весить в спулере до 1.5 гига. и висим все от дизайнера до бухгалтера, если учесть что мы с соседними сетями около 50 копмов интернетим - то иногда и другим достается...
Задача каждому принтеру прописать сетевую папку - что бы печать пускалась не на сетевой притер с подвешеванием сети а просто копировалась в папку - далее скрипт видя новый файл - запускал его на печать на определенный локальный принтер согласно назначенной папке - на котором предварительно сделаны вручную настройки качества печати, после печати файл перемещается в какую либо папку ( тип отработка) ну и дата перемещения в папку отработка желательна. папка отработка разбита по месяцам - если сложно будем ручками делать - раз в месяц создавать папку и кидать в нее отрабутку за этот месяц.
нагрузка один фал печатается от 1 до 1000 листов копий (в случае дублирования задания мы либо будем ставить количество копий в настройках принтера - либо клонируем файл нужное количество раз)
один принтер за 8 часов прогоняет максимум 100 листов
нагрузка ежедневная 5-7 дней в неделю
диски обыные 7200 об/мин от 80 до 400 гигабайт
иногда происходит засорение дюз - делаем сброс задания кнопкой на принтере - в этом случае идет прочистка головки и повтор задания по сети - мне важен не контроль отпечатанного задания (на это есть органайзер в акробате) а равномерная загрузка машин и отсутствие кривых рук пользователя при посылке задания. а это возможно если человек нажимает одну кнопку а не выполняет зависимую последовательность правильных действий
принтера струйные печатают изображения в растре и кривых - т.е. без шрифтов.
сейчас это делается ручками - причем криво - иной раз с винчестера пускается печать - иной раз по локалке... если еще дизайнер напартачит с качеством изображения то 20 листиков могут весить в спулере до 1.5 гига. и висим все от дизайнера до бухгалтера, если учесть что мы с соседними сетями около 50 копмов интернетим - то иногда и другим достается...
Задача каждому принтеру прописать сетевую папку - что бы печать пускалась не на сетевой притер с подвешеванием сети а просто копировалась в папку - далее скрипт видя новый файл - запускал его на печать на определенный локальный принтер согласно назначенной папке - на котором предварительно сделаны вручную настройки качества печати, после печати файл перемещается в какую либо папку ( тип отработка) ну и дата перемещения в папку отработка желательна. папка отработка разбита по месяцам - если сложно будем ручками делать - раз в месяц создавать папку и кидать в нее отрабутку за этот месяц.
нагрузка один фал печатается от 1 до 1000 листов копий (в случае дублирования задания мы либо будем ставить количество копий в настройках принтера - либо клонируем файл нужное количество раз)
один принтер за 8 часов прогоняет максимум 100 листов
нагрузка ежедневная 5-7 дней в неделю
диски обыные 7200 об/мин от 80 до 400 гигабайт
иногда происходит засорение дюз - делаем сброс задания кнопкой на принтере - в этом случае идет прочистка головки и повтор задания по сети - мне важен не контроль отпечатанного задания (на это есть органайзер в акробате) а равномерная загрузка машин и отсутствие кривых рук пользователя при посылке задания. а это возможно если человек нажимает одну кнопку а не выполняет зависимую последовательность правильных действий
Хм, а у тебя еще пробел в названии порта.
Тогда
Хотя что-то меня берут сомнения в твоих данных.
Printers - это "\\server\' + то, что написано вверху первой закладки "Общие" свойств принтера.
Drivers - то, что написано на закладке "Дополнительно" в строке "Драйвер".
Ports - то, что написано на закладке "Порты" в колонке "Порт" таблицы у строки с галочкой.
Тогда
Код: Выделить всё
WSH.Run """" & Acrobat & """ /t """ & Doc & """ """ & Printers & _
""" """ & Drivers & """ """ & Ports & """", 6, FalsePrinters - это "\\server\' + то, что написано вверху первой закладки "Общие" свойств принтера.
Drivers - то, что написано на закладке "Дополнительно" в строке "Драйвер".
Ports - то, что написано на закладке "Порты" в колонке "Порт" таблицы у строки с галочкой.
Ну, а мой скрипт когда пробовать будем? Я сегодня спецом после работы остался и погонял свой скрипт на реальном принтере (у меня он один, но что это меняет?). Скрипт претерпел некоторые видоизменения с учетом открывшихся обстоятельств.
Короче, все работает, аж противно
Бумаги перевел - гору, хорошо, что обычной. Будет заказчик должон за нее 
Короче, все работает, аж противно
Там же где и был. Я свой пост отредактировал после того, как убедился, что скрипт работает.VadiMGP писал(а):Volniy, так где видоизмененный скрипт-то? Ты выложи, будем посмотреть.
Скорее второе (однако, смачно сказано:)). Надо просто попробовать.VadiMGP писал(а):А кстати, любопытно мне, что происходит со скриптом, если принтер в оффлайне? Он вылетает или только спулер на дармовых гигах жиреет?
Там же порошок был, не обеднеют. А вот с бумагой в конторе конкретный напряг: начальник даже издал приказ печатать всю документацию на 2-х сторонах листа. Никогда так не делали, да и кажись по ГОСТ-ам это не всегда проходит. Зато ж какая экономияVadiMGP писал(а):А чернила, так и быть, за счет заведения?.Бумаги перевел - гору,
Ну ты даешь, однако... Это ж твой топик, чего ж не читаешь-то его? Ссылку, ладно, повторяю: для 7-го AR (и ниже, я так думаю)lamicard писал(а):Скопировал скрипт - поставил принтера - дошел до строки pdfp.exe - вопрос где взять этот файл у акробата его нет в интренете тоже - дайте ссылку на него.
http://www.esnips.com/doc/9e2a3a72-52ca ... 5f02f/pdfp
а если уже установлен 8-ой Акробат Ридер, тогда качай другую версию:
http://www.esnips.com/doc/0a1928c4-a96d ... 986c/pdfp8
Экзешник надо положить (остальные файлы не нужны) или в папку со скриптом или в какую-нибудь виндовую, которая прописана в переменной %Path%.
А че так долго пропадал-то, три сотни на гонорар по сусекам наскребал, чтоли?
спасибо - топик читаю только вы иногда меж собой разговариваете, эти сообщения мельком читаю - вот и пропустил..
скачал - запустил, ошибка строка 13 символ 4 - путь не найден
ошибка 800A004C
запустил следующее:
Dim WSH, FSO
Set WSH = CreateObject("wscript.Shell")
Set FSO = CreateObject("scripting.filesystemobject")
Dim I, PrCmd, PDFFile
Const AlreadyPrinted="c:\pdf\AlreadyPrinted"
'Устанавливаем ключ реестра в рабочее состояние
MykeyValue = True
'WSH.RegWrite MyKey, MykeyValue
PDFFolders = Array("c:\pdf\1", "c:\pdf\2") ' пишем столько папок,
сколько нам нужно
Printers = Array("EPSON Stylus Photo R270 Series", "EPSON Stylus Photo
R270 Series") ' соответствующие принтеры для каждой папки
If FSO.FolderExists(AlreadyPrinted & "\" & Month(Date)) = False Then _
FSO.CreateFolder AlreadyPrinted & "\" & Month(Date)
'Бесконечный цикл (выход по изменению ключа реестра)
Do While MykeyValue
For I= LBound(PDFFolders) To UBound(PDFFolders)
Set PDFFolder = FSO.GetFolder(PDFFolders(I))
PrCmd = (Printers(I))
For Each PDFFile In PDFFolder.Files
If UCase(FSO.GetExtensionName(PDFFile.Name))="PDF" Then
'Печать, как таковая с помошью pdfp или как-нить иначе
'pdfp.exe [options] [drive:][path]<filename>
WSH.Run "c:\pdfp.exe -p """ & PrCmd & """ """ & PDFFile.Path
& """" , 1, True
' тут команда перeименования и перемещения уже отпечатанного
файла, например
PDFFile.Name= PDFFile.Name & ".printed"
PDFFile.Move AlreadyPrinted & "\" & Month(Date) & "\" &
FSO.GetBaseName(PDFFile.Name)
End If
Next
Set PDFFolder = Nothing
Next
'Пауза в мс (а нужна ли, работы ведь хватает:-)
WScript.Sleep Delay * 1000
'Читаем реестр
'MykeyValue = WSH.RegRead(MyKey)
Loop
Set WSH = Nothing
Set FSO = Nothing
скачал - запустил, ошибка строка 13 символ 4 - путь не найден
ошибка 800A004C
запустил следующее:
Dim WSH, FSO
Set WSH = CreateObject("wscript.Shell")
Set FSO = CreateObject("scripting.filesystemobject")
Dim I, PrCmd, PDFFile
Const AlreadyPrinted="c:\pdf\AlreadyPrinted"
'Устанавливаем ключ реестра в рабочее состояние
MykeyValue = True
'WSH.RegWrite MyKey, MykeyValue
PDFFolders = Array("c:\pdf\1", "c:\pdf\2") ' пишем столько папок,
сколько нам нужно
Printers = Array("EPSON Stylus Photo R270 Series", "EPSON Stylus Photo
R270 Series") ' соответствующие принтеры для каждой папки
If FSO.FolderExists(AlreadyPrinted & "\" & Month(Date)) = False Then _
FSO.CreateFolder AlreadyPrinted & "\" & Month(Date)
'Бесконечный цикл (выход по изменению ключа реестра)
Do While MykeyValue
For I= LBound(PDFFolders) To UBound(PDFFolders)
Set PDFFolder = FSO.GetFolder(PDFFolders(I))
PrCmd = (Printers(I))
For Each PDFFile In PDFFolder.Files
If UCase(FSO.GetExtensionName(PDFFile.Name))="PDF" Then
'Печать, как таковая с помошью pdfp или как-нить иначе
'pdfp.exe [options] [drive:][path]<filename>
WSH.Run "c:\pdfp.exe -p """ & PrCmd & """ """ & PDFFile.Path
& """" , 1, True
' тут команда перeименования и перемещения уже отпечатанного
файла, например
PDFFile.Name= PDFFile.Name & ".printed"
PDFFile.Move AlreadyPrinted & "\" & Month(Date) & "\" &
FSO.GetBaseName(PDFFile.Name)
End If
Next
Set PDFFolder = Nothing
Next
'Пауза в мс (а нужна ли, работы ведь хватает:-)
WScript.Sleep Delay * 1000
'Читаем реестр
'MykeyValue = WSH.RegRead(MyKey)
Loop
Set WSH = Nothing
Set FSO = Nothing
Да я до сих пор все еще не услышал от того, кому это все, собственно, надо, работает ли у него хоть че-нить. Тоесть все это пока просто рабочая модель и я запускаю скрипт в отладчике.Batya писал(а):Volniy
Слушай, а почему ты не используешь запись\чтение реестра? Срубать процесс руками - это не очень красиво.
Потом можно будет добавлять/удалять все, что угодно. И уж я точно не думаю, что реестр это единственный способ останавливать работу скрипта с бесконечным циклом. Во-первых выключение компа скрипт-таки остановит
Ну и третье. Скрипт скриптом, но что помешает скомпилировать этот код (адаптированный, конечно) в некий экзешник с минимальным UI, хотя бы банальными кнопками Старт/Стоп и окошком с логом уже обработанных файлов?