Массовая печать в Windows
Иногда нужно быстро распечатать много картинок с котиками документов, а открывать для этого каждый файл совсем не хочется. Первым делом напрашивается использование контекстного меню проводника, но у этого способа есть свои ограничения и нюансы. Поэтому пришлось искать альтернативу. За подробностями — прошу под кат.
Анализируем ситуацию и собираем данные
Тема пакетной печати не раз освещалась в трудах великих учёных интернет-статьях. Например, в этой и этой.

Мы же начнем с выяснения того, какой функционал нужен конечным пользователям. В результате общения с коллегами получися такой список:
- печатать нужно только XML-файлы;
- форматирование для XML не требуется;
- на бумаге, помимо содержимого, должно быть указано и имя печатаемого файла;
- файлы должны быть отсортированы по имени, чтобы было удобно подшивать бумажные листы в архив.
Но у такого способа есть, как минимум, два недостатка:
- нельзя напечатать больше 15 файлов за раз;
- файлы печатаются в случайном порядке (возможно, логика все же есть, но я ее не нашел), а не так, как они отсортированы в проводнике.
Выбираем инструмент и разрабатываем решение

Примечание. Чтобы не переводить бумагу, на этапе подготовки и тестирования скрипта удобно использовать виртуальный принтер. Меня устроил штатный Microsoft XPS Document Writer, но есть еще PDF24 Creator, doPDF, CutePDF Writer — как говорится, на вкус и цвет…
В качестве языка был выбран PowerShell. В базовой комплектации скрипт выглядит так:
Вариант 0
$FolderToPrint = "\\server\share\Folder" $FileMask = "*.xml" $FolderToPrint | Get-ChildItem -File -Filter $FileMask | Sort-Object Name | ForEach-Object < Write-Output ("Печать файла `"" + $_.FullName + "`"") Start-Process -FilePath notepad -ArgumentList ("/P `"" + $_.FullName + "`"") -Wait >
Печать выполняется средствами штатного блокнота Windows (чтоб не простаивал без дела).
Как видно из 3-й строки, сортировка в примере происходит по имени файла (Name). Вместо этого можно взять за основу размер (Length) или дату изменения (LastWriteTime). Если вам требуется что-то более экзотичное, можно зайти сюда.
Для сортировки в обратном порядке у командлета Sort-Object есть ключ -Descending.
В этом варианте печать идет на принтер по умолчанию, и нас такое поведение устроило. Если же нужно печатать на принтер, отличный от дефолтного, у блокнота есть параметр /PT.
Соответственно, код примет следующий вид:
$PrinterName = "\\server2\Network Printer" Start-Process -FilePath notepad -ArgumentList ("/PT `"$PrinterName`" `"" + $_.FullName + "`"") -Wait
Аналогично вместо блокнота можно поэксплуатировать любую другую программу в зависимости от того, какой формат файлов нужно печатать. Главное — чтобы она поддерживала печать через интерфейс командной строки.
Примечание. Если будете приручать Adobe Reader, имейте в виду этот старый баг. В нашем окружении он все еще проявляется, возможно, вам повезет больше. А еще есть хорошая статья, посвященная печати PDF из PowerShell.
Если же вам на выходе нужен только «голый» текст из обычного текстовика, то 5-я строка варианта 0 примет такой вид:
Get-Content $_.FullName | Out-Printer -Name $PrinterName
Для печати на дефолтный принтер параметр -Name нужно опустить.
Для нашей задачи требовалась печать файлов из нескольких расположений. Немного дополнив вариант 0, получаем
Вариант 1
$FolderToPrint = @( "\\server1\share\Folder1", "\\server1\share\Folder2", "\\server1\share\Folder3" ) $FileMask = "*.xml" $ErrorActionPreference = "Stop" Try < $FolderToPrint | Get-ChildItem -File -Filter $FileMask | Sort-Object Name | ForEach-Object < Write-Output ("Печать файла `"" + $_.FullName + "`"") Start-Process -FilePath notepad -ArgumentList ("/P `"" + $_.FullName + "`"") -Wait >> Catch
Для приличия добавлена функция обработки исключений. И в случае, если, например, папка, из которой печатаются файлы, стала недоступной, то выполнение печати прервется и пользователю будет выведено соответствующее уведомление. Кстати, замечено, что блокнот возвращает в exit-коде 0 даже при попытке распечатать несуществующий/недоступный файл, но в GUI при этом ругается.
Опробовав вариант 1, пользователи попросили дать возможность выбора папки и конкретных файлов в ней, поэтому было добавлено немного интерактивности в виде диалогового окна выбора файлов. Так появился
Вариант 2
Add-Type -AssemblyName System.Windows.Forms | Out-Null $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog $OpenFileDialog.InitialDirectory = "\\server\share" $OpenFileDialog.Multiselect = $True $OpenFileDialog.Filter = "XML-файлы (*.xml)|*.xml|Все файлы (*.*)|*.*" $OpenFileDialog.ShowHelp = $true $OpenFileDialog.ShowDialog() | Out-Null $FilesToPrint = $OpenFileDialog.FileNames | Sort-Object ForEach ($FullFileName in $FilesToPrint) < Write-Output "Печать файла `"$FullFileName`"" Start-Process -FilePath notepad -ArgumentList ("/P `"$FullFileName`"") -Wait >
Теперь при запуске получаем привычное окно проводника Windows с удобным выбором нужных файлов:
Подробнее о работе с диалоговым окном открытия файлов можно почитать в официальной документации, а кто хочет узнать больше про GUI-зацию PowerShell, легко найдет много материала в сети, есть даже онлайн-конструктор форм.
Обработка исключений во втором варианте была убрана, т.к. интерактивное информирование пользователя было отдано на откуп проводнику и блокноту.
При запуске кода из ISE диалоговое окно выбора файлов выводится на заднем плане (Ctrl+Tab в помощь), но из командной строки все работает как положено. Также обратите внимание, что свойство ShowHelp должно быть $true, чтобы обойти этот баг.
Еще хотелось бы обратить внимание на свойство InitialDirectory. Кэп подсказывает, что оно определяет путь к папке, которая будет выбрана по умолчанию при запуске скрипта. Но, учитывая, что проводник «запоминает» последнее выбранное расположение, которое было указано пользователем в диалоге выбора файлов, InitialDirectory может пригодиться только при первом запуске скрипта.
Вариант 2 полностью подошел нашим пользователям, поэтому на нем мы и остановились. Но если вам нужен вариант с дамами и преферансом интерактивностью и сортировкой, отличной от имени (например, по дате изменения), это тоже реализуемо. Получаем
Вариант 3
Add-Type -AssemblyName System.Windows.Forms | Out-Null $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog $OpenFileDialog.InitialDirectory = "\\server\share" $OpenFileDialog.Multiselect = $True $OpenFileDialog.Filter = "XML-файлы (*.xml)|*.xml|Все файлы (*.*)|*.*" $OpenFileDialog.ShowHelp = $true $OpenFileDialog.ShowDialog() | Out-Null $SelectedFiles = $OpenFileDialog.FileNames #Если ничего не выбрано, завершаем работу If (!($SelectedFiles)) < Break >#На основании полного имени выбранного файла определяем выбранную папку $SelectedDir = (Split-Path -Parent $OpenFileDialog.FileName) #Получаем список всех файлов в выбранной папке $FilesToPrint = Get-ChildItem -Path $SelectedDir -Force | #отбираем только те из них, которые были выбраны в диалоговом окне Where-Object | #и сортируем Sort-Object -Property LastWriteTime ForEach ($File in $FilesToPrint) < $FullFileName = $File.FullName Write-Output "Печать файла `"$FullFileName`"" Start-Process -FilePath notepad -ArgumentList ("/P `"$FullFileName`"") -Wait >
Т.к. из объекта $OpenFileDialog нельзя напрямую извлечь такие параметры, как размер или дату создания файла, то мы с помощью командлета Get-ChildItem получаем список всех файлов в папке, выбранной пользователем, а потом оставляем только те из них, которые были выбраны пользователем, и сортируем их в нужном нам виде.
Отдаем в продакшн

Убедившись, что всё работает как надо, кладем скрипт в сетевую папку и выводим пользователям ярлык на рабочий стол.
А чтобы наш маленький беззащитный скрипт не обижали злые Execution Policies, прячем его в такую скорлупу:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "\\server\share\Scripts\BulkPrint.ps1"
Или можно обернуть в теплый ламповый батник.
Среди прочего, в корпоративной среде запуску скрипта могут мешать суровые Software Restriction Policies и безжалостный AppLocker, а также другое защитное ПО, но это уже выходит за рамки статьи.
Можно добавить лоска, установив красивый значок для ярлыка. Я выбрал такой:
Если пользователей нашего скрипта много, можно массово раздать ярлык с помощью предпочтений групповой политики.
Итог

Такое бывает, если выкатить без предварительного тестирования.
А у нас будет вот так:
И крамольная мысль напоследок: а что, если подумать в другом направлении и вместо всего описанного выше пообщаться с начальством и перестроить рабочий процесс?
- Системное администрирование
- PowerShell
- IT-инфраструктура
- Серверная оптимизация
- Серверное администрирование
Как поставить на печать сразу несколько файлов Word по порядку?
удерживая Ctrl, выделить левой кнопкой по-очереди файлы и отправить на печать (через правую кнопку или нажатием Ctrl+Р).
Остальные ответы
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Как распечатать несколько документов Word, PDF и других сразу?

Понравился материал?
Хотите прочитать позже?
Сохраните на своей стене и
поделитесь с друзьями
Вы можете разместить на своём сайте анонс статьи со ссылкой на её полный текст
Ошибка в тексте?

Ошибка в тексте? Мы очень сожалеем,
что допустили ее. Пожалуйста, выделите ее
и нажмите на клавиатуре CTRL + ENTER. Кстати, такая возможность есть
на всех страницах нашего сайта
Порядок вывода комментариев:
0
Спам
![]()
8 Mr_Sandro • 10:38, 29.11.2019
А как узнать порядок печати того что выделено? У меня вот допустим куча файлов которые необходимо печатать по очередности (как отсортировано в папке, от «А» до «Я») и печатать в том порядке в котором нужно?? После выделения необходимого диапазона «оно» печатает так как ему хочется.
0
Спам
![]()
7 Комментарии • 09:19, 14.05.2019
Больше 15 файловб в Windows 7, не печатает .

0
Спам
![]()
6 gumjk05 • 10:55, 24.04.2019
l@l@ — ПРАВА! у меня сработало с 15 файлами. на 16-м меню «печать» — пропадает

0
Спам
![]()
5 askerkobardov • 10:10, 10.04.2019
у меня по 15 выделенных распечатывает. винда7

0
Спам
![]()
3 Lana8359 • 14:25, 27.02.2019
Нету слова «Печать»! Нету.
1
![]()
4 l@l@ • 19:12, 27.02.2019
Сейчас провела эксперимент. При щелчке правой мышкой выпадает полное меню со словом ПЕЧАТЬ , если одновременно выделено не больше 10-11 файлов. Если больше — открывается неполное меню, где нет этого слова. Так что пробуйте.
0
Спам
![]()
2 Комментарии • 17:00, 05.01.2019
Как задать настройки печати? Например Двусторонняя печать или количество копий
0
![]()
1 Екатерина_Пашкова • 15:51, 22.08.2018
Каждый документ печатается отдельно — верно.
Свидетельство о публикации
Комментарии
Я, конечно, но ученый. Но авторы статьи или авторы методики не понимают сами, чт
Творческого вам вдохновения.!
Со всеми шаблонами можно ознакомиться здесь
а как получить файл, куда писать?
Спасибо за вашу работу! Это большая помощь при большой загруженности учителей.
Отзывы

Егорова Елена 5.0
Отзыв о товаре ША PRO Анализ техники чтения по классам
и четвертям
Хочу выразить большую благодарность от лица педагогов начальных классов гимназии «Пущино» программистам, создавшим эту замечательную программу! То, что раньше мы делали «врукопашную», теперь можно оформить в таблицу и получить анализ по каждому ученику и отчёт по классу. Великолепно, восторг! Преимущества мы оценили сразу. С начала нового учебного года будем активно пользоваться. Поэтому никаких пожеланий у нас пока нет, одни благодарности. Очень простая и понятная инструкция, что немаловажно! Благодарю Вас и Ваших коллег за этот важный труд. Очень приятно, когда коллеги понимают, как можно «упростить» работу учителя.

Наговицина Ольга Витальевна 5.0
учитель химии и биологии, СОШ с. Чапаевка, Новоорский район, Оренбургская область
Отзыв о товаре ША Шаблон Excel Анализатор результатов ОГЭ
по ХИМИИ
Спасибо, аналитическая справка замечательная получается, ОГЭ химия и биология. Очень облегчило аналитическую работу , выявляются узкие места в подготовке к экзамену. Нагрузка у меня, как и у всех учителей большая. Ваш шаблон экономит время , своим коллегам я Ваш шаблон показала, они так же его приобрели. Спасибо.

Чазова Александра 5.0
Отзыв о товаре ША Шаблон Excel Анализатор результатов ОГЭ по
МАТЕМАТИКЕ
Очень хороший шаблон, удобен в использовании, анализ пробного тестирования занял считанные минуты. Возникли проблемы с распечаткой отчёта, но надо ещё раз разобраться. Большое спасибо за качественный анализатор.

Лосеева Татьяна Борисовна 5.0
учитель начальных классов, МБОУ СОШ №1, г. Красновишерск, Пермский край
Отзыв о товаре Изготовление сертификата или свидетельства конкурса
Большое спасибо за оперативное изготовление сертификатов! Все очень красиво . Мой ученик доволен, свой сертификат он вложил в портфолио . Обязательно продолжим с Вами сотрудничество!

Язенина Ольга Анатольевна 4.0
учитель начальных классов, ОГБОУ «Центр образования для детей с особыми образовательными потребностями г. Смоленска»
Отзыв о товаре Вебинар Как создать интересный урок:
инструменты и приемы
Я посмотрела вебинар! Осталась очень довольна полученной информацией. Всё очень чётко, без «воды». Всё, что сказано, показано, очень пригодится в практике любого педагога. И я тоже обязательно воспользуюсь полезными материалами вебинара. Спасибо большое лектору за то, что она поделилась своим опытом!

Арапханова Ашат 5.0
ША Табель посещаемости + Сводная для ДОУ ОКУД
Хотела бы поблагодарить Вас за такую помощь. Разобралась сразу же , всё очень аккуратно и оперативно. Нет ни одного недостатка. Я не пожалела, что доверилась и приобрела у вас этот табель. Благодаря Вам сэкономила время , сейчас же составляю табель для работников. Удачи и успехов Вам в дальнейшем!

Дамбаа Айсуу 5.0
Отзыв о товаре ША Шаблон Excel Анализатор результатов ЕГЭ по
РУССКОМУ ЯЗЫКУ
Спасибо огромное, очень много экономит времени , т.к. анализ уже готовый, и особенно радует, что есть варианты с сочинением, без сочинения, только анализ сочинения! Превосходно!
2007-2023 «Педагогическое сообщество Екатерины Пашковой — PEDSOVET.SU».
12+ Свидетельство о регистрации СМИ: Эл №ФС77-41726 от 20.08.2010 г. Выдано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций.
Адрес редакции: 109388 г. Москвва, Гурьянова 69-2-710
Адрес учредителя: 109388 г. Москвва, Гурьянова 69-2-710
Учредитель, главный редактор: Пашкова Екатерина Ивановна
Контакты: +7-920-0-777-397, info@pedsovet.su
Домен: https://pedsovet.su/
Копирование материалов сайта строго запрещено, регулярно отслеживается и преследуется по закону.
Отправляя материал на сайт, автор безвозмездно, без требования авторского вознаграждения, передает редакции права на использование материалов в коммерческих или некоммерческих целях, в частности, право на воспроизведение, публичный показ, перевод и переработку произведения, доведение до всеобщего сведения — в соотв. с ГК РФ. (ст. 1270 и др.). См. также Правила публикации конкретного типа материала. Мнение редакции может не совпадать с точкой зрения авторов.
Для подтверждения подлинности выданных сайтом документов сделайте запрос в редакцию.
Хостинг от uCoz
- Опубликовать урок
- Опубликовать статью
- Дать объявление
- Частые вопросы
сервис вебинаров —>
О работе с сайтом
Мы используем cookie.
Публикуя материалы на сайте (комментарии, статьи, разработки и др.), пользователи берут на себя всю ответственность за содержание материалов и разрешение любых спорных вопросов с третьми лицами.
При этом редакция сайта готова оказывать всяческую поддержку как в публикации, так и других вопросах.
Если вы обнаружили, что на нашем сайте незаконно используются материалы, сообщите администратору — материалы будут удалены.
Печать и объединение нескольких файлов с помощью Acrobat
При печати и объединении нескольких PDF-файлов автоматизируйте некоторые действия, включив следующие параметры в Acrobat:
- Автоматическое добавление суффиксов в имена файлов во избежание подтверждения имени файла.
- Удаление исходных файлов после объединения.
Как выполнить печать нескольких файлов PDF
- С помощью сочетания клавиш Windows + R откройте диалоговое окно Выполнить.
- Введите control printers и нажмите кнопку ОК .

Появится окно «Устройства и принтеры».
В разделе «Принтеры» щелкните правой кнопкой мыши на Adobe PDF и выберите Настройка печати . Появится диалоговое окно параметров печати Adobe PDF.
- Щелкните на раскрывающийся список Папка сохранения Adobe PDF и выберите Documents\*.pdf.
(Чтобы выбрать другую папку, нажмите на Обзор и перейдите к нужной папке. ) - Выберите список Заменить существующий PDF и затем нажмите на Никогда.
- Нажмите кнопку ОК.

Вы можете использовать функцию «Печать как Adobe PDF» из любого приложения, например браузера или приложений Microsoft 365, и сохранить несколько файлов PDF.
