Итак, получилось сделать скрипт на PowerShell для массовой печати файлов.
Сразу отвечу комментаторам, задававшим вопросы по типу: "Зачем это надо?"
Я работаю в госучреждении, мы печатаем уйму документов по различным вопросам (Да, эта бумажная волокита в 21 веке напрягает, но не во всех сферах у нас введен электронный документооборот) В одной папке может быть до 500 штук документов по типу: Заявление1, Расшифровка1, Заявление2, Расшифровка2 и так далее. Если попробовать печатать через контекстное меню Проводника, то:
1. Они печатаются вперемешку. И потом нужно к каждому заявлению найти расшифровку. Когда у тебя 500 документов, это просто адский геморрой. А запускать печать по одному файлу тоже влечет за собой затраты времени
2. Максимальное ограничение при печати из контекстного меню - 15 файлов (да, я знаю, что можно отредактировать значение в реестре, но см. пункт 1).
3. В организации запрещены сторонние программы, поэтому PrintConductor не получится установить, к великому сожалению. Насчет гугла и всего прочего немного непонятно, так как тут не все программисты и даже простой скрипт PowerShell у меня вызвал определенные трудности, но в итоге все получилось. Иногда задачу нужно решить как можно быстрее и нет времени учиться писать макросы, скрипты и все прочее и изучать профильные сайты. Но было интересно, хоть и с примерами, но пробовать что-то новое. В общем, вот скрипт:
Add-Type -AssemblyName System.Windows.Forms | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = "C:\"
$OpenFileDialog.Multiselect = $True
$OpenFileDialog.Filter = "Все файлы (*.*)|*.*"
$OpenFileDialog.ShowHelp = $true
$OpenFileDialog.ShowDialog() | Out-Null
$FilesToPrint = $OpenFileDialog.FileNames | Sort-Object
If (!($FilesToPrint)) {
Break
}
ForEach ($FullFileName in $FilesToPrint) {
Write-Output "Печать файла `"$FullFileName`""
Start-Process -FilePath $FullFileName -Verb Print -Wait
}
1. Сохраняем его в текстовый файл, меняем расширение у текстового файла на .ps1 и пробуем запустить.
2. Скорее всего он не запустится из-за ограничений в Windows, связанных с запуском скрипта.
Для решения создаем ярлык на файл скрипта и в Свойствах ярлыка в Поле Объект пишем:
powershell -ExecutionPolicy Bypass -file "Путь до скрипта.ps1"
3. После этого кликаем по ярлыку и скрипт запросит папку для печати.
4. Открываем папку, выделяем нужные файлы (у меня .rtf и .docx) и отправляем на печать.
5. Скрипт печатает их в алфавитном порядке.
Спасибо всем за идею и наводки на решение! Надеюсь, кому-нибудь данный скрипт будет полезен.