見出し画像

【BAT】プリンター(複合機)の印刷設定を切り替える

印刷設定をワンクリックで切り替えられるように、ツール化しました。

会社のプリンター(複合機)って、印刷物に合わせて細かく設定変更することが多いのかなと思います。
たとえば
・「提案書は、カラー/片面/A4用紙で」
・「設計図面は、モノクロ/両面/A3用紙/2穴パンチ付で」
・「社内資料は、モノクロ/両面/A4用紙/2画面集約で」
・「保証書は、カラー/片面/A4用紙/手差しトレイから用紙選択で」
といった使い分けは割と多いような気がします。
私は業務で図面を扱うため用紙サイズの切り替え(A4/A3)や、契約書類を扱うため用紙トレイの切り替え(手差し/インナートレイ)や、印刷コスト削減のため画面集約(集約なし/2画面集約)を頻繁に切り替えるので、切り替えのひと手間が非常に面倒でした。
今回紹介するのは、印刷設定の書き出し・読み込みのBATツールです。
なお後日投稿予定ですが、マクロキーボードと組み合わせるとボタン1つで切り替え実行できるので便利です。

【概要】
①事前準備として、印刷設定(.datファイル)を複数用意する。
 手動で印刷設定を変更したら、BATツール(a)を使い印刷設定を書き出す。
 切り替える設定数だけ、印刷設定(.datファイル)を書き出す。
②印刷設定(.datファイル)1つにつき、1つのBATツール(b)を用意する。
 印刷設定が5パターンあれば、BATツール(b)も5個用意する。
③BATツール(b)を実行し印刷設定(.datファイル)を復元する。
 通常使うプリンターの印刷設定が更新される。

初回設定時のみ①②が必要ですが、実際の運用は③だけ操作すればOKです。つまりBATファイルをダブルクリックすれば設定切り替えが可能。
 


①について
まずは、印刷設定を書き出すBATツール(a)です。

@ECHO OFF

REM -------------------------------
REM 通常使うプリンター名を変数%DefaultPrinter%へ代入
REM -------------------------------
FOR /f "usebackq tokens=1,2* delims=:" %%a IN (`Cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -g`) DO SET DefaultPrinter=%%b
CALL :Trim %DefaultPrinter%
ECHO %DefaultPrinter%

REM -------------------------------
REM プリンタ設定を書き出す
REM -------------------------------
rundll32.exe printui.dll,PrintUIEntry /Ss /n "%DefaultPrinter%" /a "%~dp0PRINTER_SETTING.dat"

:Trim
SET DefaultPrinter=%*

これを実行すると、「通常使うプリンター」に設定されているプリンターの印刷設定を「.datファイル」で書き出すことができます。
このBATツール(a)と同じ場所に書き出されます。
印刷設定が書き出されたら、分かりやすい名前に変更しましょう。
 例:図面用設定.dat、提案書用設定.dat、画面集約設定.dat

なお手動で印刷設定を変更するには、コントロールパネル>デバイスとプリンター から、対象プリンターを右クリックして「印刷設定」で変更します。このとき合わせて、「通常使うプリンターに設定」もしておきます。

切り替えたい印刷設定のパターン数だけ、
 ・手動で印刷設定変更
 ・BATツール(a)を使い、印刷設定(.datファイル)を書き出し
 ・任意の名前に変更
を繰り替えして、.datファイルを用意してください。
一通り印刷設定(.datファイル)が書き出せたら、もうBATツール(a)は使わないので削除してしまってOK。

切り替えたい印刷設定の分だけ.datファイルを用意

念のためBATツール(a)の中身を補足しておくと、「Cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -g」が通常使うプリンターを取得する部分です。これをFORコマンドで囲うことで、結果を変数%DefaultPrinter%に代入しています。更に、このままだと変数%DefaultPrinter%の先頭に余計なスペースが含まれているため、「CALL :Trim %DefaultPrinter%」でスペースをトリミング。
「rundll32.exe printui.dll,PrintUIEntry /Ss /n "プリンター名" /a "%~dpファイル名"」で、ファイルを書き出しています。なおファイル名の先頭に%~dpを付けたのは、ネットワークドライブ上でもこのBATツール(a)が動作するようにするためです。(これが無いと、ネットワークドライブ上で動かしたときに、印刷設定(.datファイル)の保存先がWindows既定("C:\Windows")になってしまう。)
BATツールの文字コードはANSIを選択のこと。


②について
次に、印刷設定を読み込む(印刷設定を復元する)BATツール(b)です。

@ECHO OFF

REM -------------------------------
REM 通常使うプリンター名を変数%DefaultPrinter%へ代入
REM -------------------------------
FOR /f "usebackq tokens=1,2* delims=:" %%a IN (`Cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -g`) DO SET DefaultPrinter=%%b
CALL :Trim %DefaultPrinter%
ECHO %DefaultPrinter%

REM -------------------------------
REM プリンタ設定を読み込む
REM -------------------------------
SET SETTING=PRINTER_SETTING.dat
rundll32.exe printui.dll,PrintUIEntry /Sr /n "%DefaultPrinter%" /a "%~dp0%SETTING%" u

:Trim
SET DefaultPrinter=%*

これを実行すると、「通常使うプリンター」に設定されているプリンターに、印刷設定(.datファイル)を適用することができます。
読み込む印刷設定(.datファイル)は、下から4行目の
「SET SETTING=PRINTER_SETTING.dat」の部分で指定しています。そのため、上記①で分かりやすい名前に変更したなら、その名前と一致するように「PRINTER_SETTING.dat」の部分を書き換えてください。
※印刷設定(.datファイル)1つに対し、このBATツール(b)も1つ必要。
全ての印刷設定(.datファイル)と紐づけるため、BATツール(b)も複数作成しておきます。

.datファイルの数だけ、BATツール(b)も用意。
「PRINTER_SETTING.dat」の部分は、それぞれの.datファイル名に一致するよう書き換えておく。

念のためBATツール(b)の中身を補足しておくと、「rundll32.exe printui.dll,PrintUIEntry /Sr /n "プリンター名" /a "%~dpファイル名"」で、ファイルに保存した印刷設定を復元しています。行の最後に「u」フラグを付けたのは、エラー回避のためです。参考リンク
BATツールの文字コードはANSIを選択のこと。


③について
それぞれのBATツール(b)をダブルクリックして実行すると、紐づけられた印刷設定(.datファイル)が読み込まれます。
必要なタイミングで、それぞれのBATツール(b)をダブルクリックすれば印刷設定が切り替わるので、いちいちドライバーの設定画面を開いて変更する手間から解放されます。
ちょっとだけ業務効率化できたかも?

以上、印刷設定の変更ツールでした。
ちなみに参考ですが、通常使うプリンターをBATツールで変更する場合はこんな感じ。必要に応じて活用ください。

rundll32.exe printui.dll,PrintUIEntry /y /n "Brother HL-L2330D series"

いいなと思ったら応援しよう!