Как распечатать все файлы в папке сразу

от admin

Массовая печать в Windows

Иногда нужно быстро распечатать много картинок с котиками документов, а открывать для этого каждый файл совсем не хочется. Первым делом напрашивается использование контекстного меню проводника, но у этого способа есть свои ограничения и нюансы. Поэтому пришлось искать альтернативу. За подробностями — прошу под кат.

Анализируем ситуацию и собираем данные

Тема пакетной печати не раз освещалась в трудах великих учёных интернет-статьях. Например, в этой и этой.

Мы же начнем с выяснения того, какой функционал нужен конечным пользователям. В результате общения с коллегами получися такой список:

  • печатать нужно только XML-файлы;
  • форматирование для XML не требуется;
  • на бумаге, помимо содержимого, должно быть указано и имя печатаемого файла;
  • файлы должны быть отсортированы по имени, чтобы было удобно подшивать бумажные листы в архив.

Но у такого способа есть, как минимум, два недостатка:

  1. нельзя напечатать больше 15 файлов за раз;
  2. файлы печатаются в случайном порядке (возможно, логика все же есть, но я ее не нашел), а не так, как они отсортированы в проводнике.

Выбираем инструмент и разрабатываем решение

Примечание. Чтобы не переводить бумагу, на этапе подготовки и тестирования скрипта удобно использовать виртуальный принтер. Меня устроил штатный Microsoft XPS Document Writer, но есть еще PDF24 Creator, doPDF, CutePDF Writer — как говорится, на вкус и цвет…

В качестве языка был выбран PowerShell. В базовой комплектации скрипт выглядит так:

Печать выполняется средствами штатного блокнота Windows (чтоб не простаивал без дела).
Как видно из 3-й строки, сортировка в примере происходит по имени файла (Name). Вместо этого можно взять за основу размер (Length) или дату изменения (LastWriteTime). Если вам требуется что-то более экзотичное, можно зайти сюда.

Для сортировки в обратном порядке у командлета Sort-Object есть ключ -Descending.

В этом варианте печать идет на принтер по умолчанию, и нас такое поведение устроило. Если же нужно печатать на принтер, отличный от дефолтного, у блокнота есть параметр /PT.

Соответственно, код примет следующий вид:

Аналогично вместо блокнота можно поэксплуатировать любую другую программу в зависимости от того, какой формат файлов нужно печатать. Главное — чтобы она поддерживала печать через интерфейс командной строки.

Примечание. Если будете приручать Adobe Reader, имейте в виду этот старый баг. В нашем окружении он все еще проявляется, возможно, вам повезет больше. А еще есть хорошая статья, посвященная печати PDF из PowerShell.

Если же вам на выходе нужен только «голый» текст из обычного текстовика, то 5-я строка варианта 0 примет такой вид:

Для печати на дефолтный принтер параметр -Name нужно опустить.

Для нашей задачи требовалась печать файлов из нескольких расположений. Немного дополнив вариант 0, получаем

Для приличия добавлена функция обработки исключений. И в случае, если, например, папка, из которой печатаются файлы, стала недоступной, то выполнение печати прервется и пользователю будет выведено соответствующее уведомление. Кстати, замечено, что блокнот возвращает в exit-коде 0 даже при попытке распечатать несуществующий/недоступный файл, но в GUI при этом ругается.

Опробовав вариант 1, пользователи попросили дать возможность выбора папки и конкретных файлов в ней, поэтому было добавлено немного интерактивности в виде диалогового окна выбора файлов. Так появился

Теперь при запуске получаем привычное окно проводника Windows с удобным выбором нужных файлов:

Подробнее о работе с диалоговым окном открытия файлов можно почитать в официальной документации, а кто хочет узнать больше про GUI-зацию PowerShell, легко найдет много материала в сети, есть даже онлайн-конструктор форм.

Обработка исключений во втором варианте была убрана, т.к. интерактивное информирование пользователя было отдано на откуп проводнику и блокноту.

При запуске кода из ISE диалоговое окно выбора файлов выводится на заднем плане (Ctrl+Tab в помощь), но из командной строки все работает как положено. Также обратите внимание, что свойство ShowHelp должно быть $true, чтобы обойти этот баг.

Еще хотелось бы обратить внимание на свойство InitialDirectory. Кэп подсказывает, что оно определяет путь к папке, которая будет выбрана по умолчанию при запуске скрипта. Но, учитывая, что проводник «запоминает» последнее выбранное расположение, которое было указано пользователем в диалоге выбора файлов, InitialDirectory может пригодиться только при первом запуске скрипта.

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

Читать:
Plymouth quit wait service что это

Т.к. из объекта $OpenFileDialog нельзя напрямую извлечь такие параметры, как размер или дату создания файла, то мы с помощью командлета Get-ChildItem получаем список всех файлов в папке, выбранной пользователем, а потом оставляем только те из них, которые были выбраны пользователем, и сортируем их в нужном нам виде.

Отдаем в продакшн

Убедившись, что всё работает как надо, кладем скрипт в сетевую папку и выводим пользователям ярлык на рабочий стол.

А чтобы наш маленький беззащитный скрипт не обижали злые Execution Policies, прячем его в такую скорлупу:

Или можно обернуть в теплый ламповый батник.

Среди прочего, в корпоративной среде запуску скрипта могут мешать суровые Software Restriction Policies и безжалостный AppLocker, а также другое защитное ПО, но это уже выходит за рамки статьи.

Можно добавить лоска, установив красивый значок для ярлыка. Я выбрал такой:

Если пользователей нашего скрипта много, можно массово раздать ярлык с помощью предпочтений групповой политики.

Такое бывает, если выкатить без предварительного тестирования.

А у нас будет вот так:

И крамольная мысль напоследок: а что, если подумать в другом направлении и вместо всего описанного выше пообщаться с начальством и перестроить рабочий процесс?

Как распечатать все файлы в папке сразу

Открыть панель управления принтерами

  1. Щелкните раскрывающийся список Папка вывода Adobe PDF и выберите Documents\*.pdf.
    (Чтобы выбрать другую папку вывода, нажмите кнопку Обзор , перейдите к папке в списке и нажмите кнопку OK .)
  2. Щелкните раскрывающийся список Заменить существующий PDF и выберите Никогда.
  3. Нажмите ОК.

Настройки Adobe PDF

Массовая печать в Windows

Иногда нужно быстро распечатать много картинок с котиками документов, а открывать для этого каждый файл совсем не хочется. Первым делом напрашивается использование контекстного меню проводника, но у этого способа есть свои ограничения и нюансы. Поэтому пришлось искать альтернативу. За подробностями — прошу под кат.

Мы же начнем с выяснения того, какой функционал нужен конечным пользователям. В результате общения с коллегами получися такой список:

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

Примечание. Чтобы не переводить бумагу, на этапе подготовки и тестирования скрипта удобно использовать виртуальный принтер. Меня устроил штатный Microsoft XPS Document Writer, но есть еще PDF24 Creator, doPDF, CutePDF Writer — как говорится, на вкус и цвет…

Печать и объединение нескольких файлов с помощью Acrobat

При печати и объединении нескольких PDF-файлов автоматизируйте некоторые действия, включив следующие параметры в Acrobat:

  • Автоматическое добавление суффиксов в имена файлов во избежание подтверждения имени файла.
  • Удаление исходных файлов после объединения.

Как выполнить печать нескольких файлов PDF

Откройте папку Устройства и принтеры в ОС Windows:

  1. С помощью сочетания клавиш Windows + R откройте диалоговое окно Выполнить.
  2. Введите control printers и нажмите кнопку ОК .

Открыть панель управления принтерами

Появится окно «Устройства и принтеры».

В разделе «Принтеры» щелкните правой кнопкой мыши на Adobe PDF и выберите Настройка печати .

Появится диалоговое окно параметров печати Adobe PDF.

В этом диалоговом окне выполните следующие действия:

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

Настройки Adobe PDF

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

Как объединить несколько файлов PDF

Перейдите в Инструменты > Объединить файлы и выполните следующие действия:

Как распечатать все файлы в папке сразу

В Word вы можете распечатать активный документ, щелкнув «Файл»> «Печать», но если в папке несколько документов Word, как вы можете распечатать документы, не открывая их по одному?

Распечатать несколько документов Word в папке, не открывая

Собственно, в контекстном меню есть функция, которая поможет вам сразу распечатать документы Word в папке.

Откройте папку, содержащую документы Word, которые вы хотите распечатать, выберите файлы, которые хотите распечатать, щелкните правой кнопкой мыши, чтобы отобразить контекстное меню, затем выберите Печать / PDF. Затем выбранные документы будут автоматически напечатаны один за другим.
doc распечатать документ в папке 1

Похожие статьи