Bar

PowerShell 複数のPDFファイルを印刷する方法

PDFファイルが数百個保存されているフォルダーから特定のFファイルをいくつか印刷する機会がありました。
当初はFile Explorerの検索窓に対象ファイル名を入力→印刷を繰り返しましたが、あまりにも面倒になったので対象ファイルを一気に印刷するPowerShell スクリプトを書いてみました。

2015.12.17 加筆
サンプルに印刷順のずれを抑止するスリープ処理を追加しました

Start-Process コマンドレットを使ってPDFを印刷する

サンプルの流れは以下の通りです。
  1. 印刷するファイル名をlist.txtに入力する
  2. Get-Content コマンドレットでlist.txtを読み取る
  3. 行数分Start-Process コマンドレットを実行しPDFを印刷する
#PDFが保存されたフォルダーパス
$path = "\\fileServer\Pdfs"

#ファイルの拡張子
$ext = "pdf"

#ファイル名が書かれたファイルパス
$list = "c:\temp\list.txt"

#ファイル名を読み取る
$file = Get-Content -Path $list -Encoding Default

#ファイルを印刷
$file | %{
    Start-Process -FilePath "$path\$_.$ext" -Verb Print | Stop-Process

    #印刷順のズレを抑止するためのスリープ処理
    Start-Sleep -Seconds 3
}

大切なパートは2つ。
一つ目はStart-Process コマンドレットの-Verbパラメーターです。
ヘルプを確認すると以下のようなVerb(動詞)が指定でき、今回は印刷なのでPrintを指定しています。
File type      Verbs
---------      -------
.cmd------Edit, Open, Print, Runas
.exe------Open, RunAs
.txt------Open, Print, PrintTo
.wav------Open, Play

二つ目はStart-Sleep コマンドレット。
サンプルではStart-Process コマンドレットを実行した後に3秒スリープさせ、印刷順のズレを抑止しています。
もしStart-Process コマンドレットなしで実行すると印刷順がバラバラになり、場合によっては印刷物の順番を入れ替える手作業が発生します。