業務改善!Windows PowerShell入門

Windows PowerShellで、とにかく楽をしたい!実際に仕事で楽になった事、便利になった事を紹介しつつ進めていきます。

PowerShell 自動印刷をしろ!


 

毎回、お決まりの作業はとことん自動でやりませう!
ルーチンワークは自動でやりませう!

 

 

ちんたらやってたら、日が暮れちまうゼ!

 


ファイルの大量印刷ってのは、結構めんどくさい。
大昔、俺はファイルを「全選択して右クリック印刷」という手法を試してみた。

しかし、うまくいかなかった場合が多かった。

 

・選択ファイル数がある一定数を超えると、右クリック印刷の選択肢が消滅する。

・拡張子の異なるファイルがあると、右クリック印刷の選択肢が消滅する。

・印刷はできたが、印刷順がバラバラ。

 

まるで、話にならんゼ!!


こんなのはPowerShellでさくっとやるべきだ。それはStart-Processコマンドレットで可能となる。

印刷対象となる代表的なファイル分類は以下だろう。

 

・テキストファイル
Excel、Word、PowerPoint
・PDF

 

もう、スタンダード過ぎる奴らばかりだ。
Start-Processコマンドレットはファイルに関連付けられているプログラムをまずは起動してくれる。で、その後が大事だ。印刷してくれるんけ?!

 

 

 

 

 

 

 


 

起動した後、どうするかという「動詞」に相当するパラメータが用意されているゼ!

verbパラメータというものがあり、それにPrintを指定するだけ。


▼問題点を解消したPowerShellスクリプトはこれ

#-----------------------------------
# 処理名:自動印刷
#-----------------------------------
#対象フォルダ
$folder = "C:¥hoge"

#予告メッセージ
Write-Host "$folder フォルダ直下のファイルをすべて印刷する!"
Write-Host "※ファイル間のスリープ処理:2秒`r`n"

#ファイル名の昇順で印刷実行
Dir $folder | Sort Name | ForEach{

    #ファイル名表示後、実行
    Write-Host $_.Name
    Start-Process $_.FullName -Verb Print | Stop-Process

    #2秒スリープ
    Start-Sleep -s 2
}

Write-Host "`r`n完了!`r`n"
Read-Host "×ボタンで終了"

 

・Sort-Object(Sort)コマンドレットのデフォルトは昇順

・1ファイルの印刷が終わったら、Stop-Processコマンドレットでプロセスを停止する。

印刷順のズレを解消するために、とりあえず2秒スリープさせる。

 

 

f:id:acoustic_groove:20171123170628p:plain

 4のジャパンの綴りが間違っていますね。

 

▼資源の無駄使いをしないために、プリンタの電源OFF状態で、印刷キューを確認した。

 

f:id:acoustic_groove:20171123170632p:plain

 

PowerShell、イエーイ!