Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/55: Рейтинг темы: голосов - 55, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 17.01.2018
Сообщений: 6
VBS

Печать pdf из папки

17.01.2018, 10:19. Показов 11064. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте товарищи программисты, опишу суть проблемы, для личных нужд потребовался скрипт который умеет печатать .pdf файлы из папки, оный был найден на просторах интернета и опробован, понравилось всё кроме одного момента, он печатает через программу которая установлена по умолчанию для файлов .pdf в Windows, а у меня есть необходимость использовать другое ПО(SumatraPDF), просьба помочь с данным вопросом хотя бы советом куда глядеть, что менять, а то я кроме JavaScript'а ничего и не знаю и к сожалению в VBS вообще ничего не понимаю.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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("C:\print\") 'Папка, из которой производится печать
 
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
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.01.2018, 10:19
Ответы с готовыми решениями:

Пакетная конвертация PDF в DOC и печать любых документов на PDF-принтере
В первую очередь извините, если создал тему в неположенном разделе, но к сожалению найти близкий по тематике раздел мне не удалось =(. ...

Печать pdf файлов
Доброго времени суток! Есть папка, в папке много pdf файлов, которые надо распечатать в определенном порядке (печатать в алфавитном...

Печать PDF-файлов из разных папок одной кнопкой
Доброго времени суток, уважаемые форумчане! хочется научиться писать скрипты на vbs, используя реальные задачи. пожалуйста, помогите...

6
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
17.01.2018, 12:44
APetrov,
1. почему в разделе VBA? Есть https://www.cyberforum.ru/vbscript-wsh/
2. этот скрипт не только печатает файлы, но и удаляет их - Вам это действительно нужно?
3. как происходит печать в SumatraPDF - это ПО добавляет команду в контекстное меню Проводника? Если да, попробуйте заменить в 23 строке print на эту команду.
Или оно работает через командную строку?
0
0 / 0 / 0
Регистрация: 17.01.2018
Сообщений: 6
17.01.2018, 12:57  [ТС]
Цитата Сообщение от Казанский Посмотреть сообщение
1. почему в разделе VBA? Есть https://www.cyberforum.ru/vbscript-wsh/
Мой косяк, не заметил.
Цитата Сообщение от Казанский Посмотреть сообщение
2. этот скрипт не только печатает файлы, но и удаляет их - Вам это действительно нужно?
Да.
Цитата Сообщение от Казанский Посмотреть сообщение
ПО добавляет команду в контекстное меню Проводника?
Нет. По сути это аналог Acobat Reader'а.

Вообще для SumatraPDF есть такой батник, но там отсутствует удаление файлов, мониторинг папки и фоновая работа, по этому я решил, что проще тот скрипт переделать, чем этот:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@echo off
title Скрипт пакетной печати
:: Максимов Макс [vk.com/themaximax] - 15 сентября 2015
 
:: mask - маска файлов; pdir - откуда печатать
set mask=*.pdf
set pdir=e:\print
:: print - команда вывода на печать, для других программ смотрите справку
set print="C:\Program Files\SumatraPDF\SumatraPDF.exe" -print-to-default
 
::проверяем доступность папки печати
if not exist %pdir% (
    cls
    :: если недоступна, то пробуем создать
    echo Пробую создать %pdir%
    ping 127.0.0.1 -n 2 >nul
    mkdir %pdir%
    if errorlevel 1 (
        echo.
        echo Продолжение выполнения скрипта не возможно!
        echo Если %pdir% находится на сетевом диске, проверьте его доступность
        pause >nul & exit
    )
)
 
::перебираем циклом файлы и печатаем
cls
for %%i in (%pdir%\%mask%) do (
    echo Печатаю %%i...
    %print% "%%i"
    ping 127.0.0.1 -n 10 >nul
    del /f /q "%%i"
)
exit
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
17.01.2018, 13:47
Цитата Сообщение от APetrov Посмотреть сообщение
там отсутствует удаление файлов
Присутствует - строка 32
Цитата Сообщение от APetrov Посмотреть сообщение
мониторинг папки и фоновая работа
То есть Вы хотите, чтобы этот скрипт постоянно висел в памяти, периодически проверял указанную папку на наличие *.pdf, распечатывал их и удалял?
0
0 / 0 / 0
Регистрация: 17.01.2018
Сообщений: 6
17.01.2018, 14:39  [ТС]
Цитата Сообщение от Казанский Посмотреть сообщение
То есть Вы хотите, чтобы этот скрипт постоянно висел в памяти, периодически проверял указанную папку на наличие *.pdf, распечатывал их и удалял?
Всё верно.
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
17.01.2018, 15:44
Лучший ответ Сообщение было отмечено APetrov как решение

Решение

APetrov, пробуйте. Чтобы закончить работу скрипта, нужно завершить процесс wscript.exe в диспетчере задач.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
'Const CMD = """C:\Program Files\IrfanView\i_view32.exe"" ""%file%"" /print" 'моя тестовая команда
Const CMD = """C:\Program Files\SumatraPDF\SumatraPDF.exe"" -print-to-default ""%file%"""
Const FLDR = "C:\print\" 'Папка, из которой производится печать
Dim objFS, objWSH, objFile
 
  Set objFS = CreateObject("Scripting.FileSystemObject")
  Set objWSH = CreateObject("WScript.Shell")
  On Error Resume Next
  Do
    For Each objFile In objFS.GetFolder(FLDR).Files
      If LCase(objFS.GetExtensionName(objFile.Name)) = "pdf" Then
        objWSH.Run Replace(CMD, "%file%", objFile.Name), 0, True
        objFile.Delete
      End If
    Next
    wscript.sleep 5000 '5 сек задержка
  Loop
1
0 / 0 / 0
Регистрация: 17.01.2018
Сообщений: 6
17.01.2018, 15:59  [ТС]
Цитата Сообщение от Казанский Посмотреть сообщение
пробуйте
Всё великолепно работает, благодарю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.01.2018, 15:59
Помогаю со студенческими работами здесь

Поиск и печать файлов Word, Excel, PDF, не открывая программы
Добрый День у меня на данный момент имеется 3 скрипа один для word один для excel и один для pdf каждый из них отвечает за печать...

250 файлов *.pdf перенести с папки на диске в папки SharePoint
Всех приветствую! Уважаемые форумчане, нужна консультация в плане разработки для обычного пользователя настольного приложения для...

250 файлов *.pdf перенести с папки на диске в папки SharePoint
Всех приветствую! Уважаемые форумчане, нужна консультация в плане разработки для обычного пользователя настольного приложения для...

Печать pdf
Доброго времени суток. Подскажите решение - использую для подготовки к печати QPrinter и QWebView.Пытаюсь через html вывести на...

Печать файла pdf
Добрый день! Подскажите, пожалуйста, хорошую библиотеку и пример для печати pdf-файлов. Хочу написать программу по печати pdf-файлов....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru