Windowsコマンドを使用して、複合機などのネットワークに接続されたプリンタのIPアドレスや指定したの名称を設定したドライバのインストール方法を紹介する。
通常はドライバをダウンロードしてインストーラを起動すると自動でプリンタを見つけてインストールしてくれるが、下記のような課題がある。
- 複合機やプリンタが複数あるとどれかわからない
- パソコン上のプリンタ名が機器名になり、複数同じ機種があるとどれかわからなくなる。名称を変更できるが、手動で設定することで、パソコン毎にバラバラになる。
- 1台のパソコンに複数のプリンタドライバをインストールすると煩雑になる
そこで、コマンドで独自のインストーラを作ってしまおう。
コマンドで複合機などネットワークプリンタの名称・IPアドレス設定とドライバインストール方法
1.複合機やプリンタドライバをダウンロードする
複合機やプリンタの機種を確認して、メーカーのドライバダウンロードサイトからダウンロードする。「[機種名] [ドライバー]」といったキーワードで検索すれば出てくるだろう。
2.ダウンロードしたファイルからINFファイルを含むドライバフォルダを抽出
ダウンロードしたプリンタドライバファイルを、ファイル解凍ソフトで解凍する。または、ファイルの拡張子を「exe」から「zip」に変更して解凍する。
解凍できない場合は、ファイルを実行するとファイルが指定場所に解凍されて、インストール画面が表示されるのでキャンセルする。
解凍すると、拡張子が「INF」のファイルを含むファイルが含まれるフォルダを探し、そのフォルダをピックアップする。
複数ある場合は、32ビット・64ビットの違いや、印刷言語(PS・PPD(PostScript)、SPDL(Sharp Printer Description Language))などの違いで、最適なものを選択する。
32bit・64bitは、インストールするWindowsの設定で確認して選択する。32bit → x86、64bit → x64 と表現されている場合がある。
3.INFファイルからプリンタのモデル名を取得
抽出したINFファイル内にある実際にインストールするプリンタのモデル名を取得する。
INFファイルをダブルクリックして開き、
① 「Provider」キーを見つけ、その右側の値を検索する
② ①で検索した先にあるキーの右側の値を検索する
③ ②で検索した先にあるセクション内のリスト内のキー(左側)から該当するモデル名を取得する。
下記、INFファイルの例:
[Version]
Signature="$Windows NT$"
Provider=%ITMemo% ←①
ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318}
Class=Printer
CatalogFile=ITMemoPrinter.CAT
DriverVer=01/01/2023,1.0.0.0
[Manufacturer]
%ITMemo%=ITMemo,NTamd64 ←②
[ITMemo.NTamd64]
"ITMemoPrinter A1000" = ~~~~~~~~~~~ ←③
「%~%」は変数的な定義である。そのため、③でこのような書き方がある場合は、その文字列でさらに検索してみる。
4.プリンタポートの作成
プリンタと通信するためのポートを作成する必要がある。プリンタポートを作成するには下記のコマンドを実行する。
cd "C:\Windows\System32\Printing_Admin_Scripts\ja-JP"
cscript prnport.vbs -a -r [ポート名] -h [IPアドレス] -o raw -n 9100
[ポート名] は、自由に決めることはできるが、例として「IP_192.168.11.5」といった名称をおすすめする。ポートが使用しているIPアドレスが名称からわかるようにしておくと、事後のメンテがしやすい。
[IPアドレス]は、複合機やプリンタのIPアドレスを指定する。ここでは固定アドレスを使用していることを想定している。
例:
cd "C:\Windows\System32\Printing_Admin_Scripts\ja-JP"
cscript prnport.vbs -a -r IP_192.168.11.5 -h 192.168.11.5 -o raw -n 9100
実行した結果は、「設定」→「デバイス」→「プリンタとスキャナー」→関連設定の「プリントサーバープロパティ」→「ポート」タブで確認できる
5.プリンタドライバをインストールするコマンド
rundll32.exe printui.dll,PrintUIEntry /if /b "[プリンタ名]" /f "[INFファイルパス]" /r [ポート名] /m "[プリンタのモデル名]"
[プリンタ名]は、パソコン上でプリンタの一覧を表示したときに表示される名称。
[INFファイル]は、前述で抽出したINFファイルのファイルパス。
[ポート名]は、前述で作成したプリンタポートのポート名。
[プリンタのモデル名]は、前述で抽出したINFファイル内にあるプリンタのモデル名。
例:
rundll32.exe printui.dll,PrintUIEntry /if /b "総務部複合機" /f "c:\prtdriver\printer.inf" /r IP_192.168.11.5 /m "ITMemoPrinter A1000"
プリンタの削除コマンド
インストールコマンドを複数回実行すると、同じ名前のプリンタが複数できてしまいあまり良い状況ではなくなる。そのため、プリンタの削除コマンドも紹介しておく。
rundll32.exe printui.dll,PrintUIEntry /q /dl /n [プリンタ名]
通常使うプリンタに登録コマンド
通常使うプリンタに登録するコマンドも紹介しておく。
cd "C:\Windows\System32\Printing_Admin_Scripts\ja-JP"
cscript prnmngr.vbs -t -p "[プリンタ名]"
独自のプリンタドライバーのインストーラーを作成する
下記のようなフォルダ構成でインストーラを作成して、バッチファイルを実行したらインストールが完了するようにしてはいかがだろうか。
Driverフォルダには、INFファイルを含んだフォルダのファイルを入れる。
install.batファイルの内容は下記のようなものを作成する。
REM カレントパスを取得(\まで付く)
SET DIR_PATH=%~d0%~p0
rem プリンタ名
SET PRT_NAME="総務部複合機"
rem INFファイルのパス(32bit-x86、64bit-x64 の違いを確認)
SET INF_PATH="%DIR_PATH%\Driver\printer.inf"
rem プリンタモデル名(INFファイル内のModel sections.を確認)
SET MODEL_NAME="ITMemoPrinter A1000"
rem プリンタのIPアドレス
SET PORT_IP=192.168.11.5
rem プリンタポート名(IP_[IPアドレス])として自動設定
SET PORT_NAME=IP_%PORT_IP%
rem 既存プリンタドライバ削除
rundll32.exe printui.dll,PrintUIEntry /q /dl /n %PRT_NAME%
rem 10秒待機
timeout /t 10 > nul
rem プリンタポート作成・更新
cd "C:\Windows\System32\Printing_Admin_Scripts\ja-JP"
cscript prnport.vbs -a -r %PORT_NAME% -h %PORT_IP% -o raw -n 9100
rem プリンタドライバインストール
rundll32.exe printui.dll,PrintUIEntry /if /b %PRT_NAME% /f %INF_PATH% /r %PORT_NAME% /m %MODEL_NAME%
コメント