大量のtiff画像のプリントアウト

大量のTIFF画像をプリントアウトする処理で、PCがハングアップする問題に遭遇した。JPEGなら問題無く100枚以上の画像をプリントアウト出来るのに、TIFF画像はPCに異常な負荷がかかるらしい。

いちいち手作業で印刷を実行してられないので、バッチ処理(自動)で済ませたい。
画像系アプリ経由でプリントアウトする方法を手っ取り早く調べてみたところ、IrFanViewというアプリがコマンドからの指定でプリントアウト出来ることが分かった。

“C:\Program Files\IrfanView\i_view64.exe” 1-00101-01.tif /print=”Printer Name”

IrFanViewのPATHと、対象ファイル名、プリンター名の指定のみ。

テスト的にPC上で検証してみたかったので、DocuWorks Printerを指定してみたら1ページずつになるが思い通りに印刷処理が出来ることを確認した。

べた打ちのBATファイルだとこんな感じ

“C:\Program Files\IrfanView\i_view64.exe” 1-00101-01.tif /print=”DocuWorks Printer”
“C:\Program Files\IrfanView\i_view64.exe” 1-00101-02.tif /print=”DocuWorks Printer”
“C:\Program Files\IrfanView\i_view64.exe” 1-00101-03.tif /print=”DocuWorks Printer”

対象画像ファイル名をリストにして、外部リストを読み込むようにBATファイルを作っても良いかも知れない。

for /f “delims=” %%a in (list.txt) do (
“C:\Program Files\IrfanView\i_view64.exe” %%a /print=”DocuWorks Printer”
)

DocuWorksは印刷直前のお膳立てをするのに非常に便利。
とりあえずこれで目的は達成出来たので備忘録。

IPアドレスからホスト名を調べたい~BATファイルを実行してもらう

遠隔地の拠点でネットワークトラブルがあり、ログを収集したところIPアドレスは記録されている事が分かった。しかしIPアドレスの割当はDHCPで行っており、また複数の会社で共同利用しているネットワークなので、接続されているPCを把握出来ていない。

ログの収集と同じタイミングで、NBTSTATコマンドを実行して調査をすれば当該IPアドレスのホスト名を突き止めることが出来るが、拠点のユーザーにはあまり手間をかけさせたくないので、BATファイルを作ることにした。

実行するコマンドを記したBATファイル

対象とするIPアドレスをリスト

この2つのファイルを、デスクトップに置いて、BATファイル(load-list.bat)を実行してもらう。するとデスクトップに「logfile.txt」というコマンドの実行結果が得られる。

BATファイルの置き場所(PATH)を自動的に認識させる方法もあったと思うが、面倒なので「デスクトップ」に置いて実行という条件のもとに簡単に作成した。

処理的には一切複雑な事をせず、洗練されていないのでコマンドを実行した結果がログファイルに記されるだけ。それでも遠隔地で(リモート操作は制限されているので不可)実行したいコマンドを簡単に処理させてもらえるので、ユーザーにも指示(依頼)しやすく、こちらとしても知りたい結果が得られる。

実行(収集)結果は電子メールに添付して送り返して貰った。

BATファイルで別ファイル(リスト)を読み込む手法は、応用が利くので利便性は高いと思われる。カンマ区切りにも対応出来るので、詳しくはbatファイル内でfor文を使う事例を検索すると良いでしょう。

私はプログラマーでは無いので複雑な事よりも、手早く結果がえられるシンプルさを優先します。リストからIPアドレスを一行ずつ読み込んで変数に取り込んで実行するだけのループ処理でも十分使えると思っています。

Windows 7のリカバリー後にWindows Updateが全然進まない件で備忘録

長期間使用されてPC環境が汚れていると思われるPC、しばらく予備機としてストックしているので、この機会にシステムリカバリーを行って、すぐに使用出来る様に備えることにした。

メーカーのリカバリーディスクを使用してハードディスクを消去後、Windows 7 Professionalをリカバリー。真っ新なOS環境が手に入った。今までならこの後に必要なアプリ(Office等)をインストールするだけで良かったが、最近は、Windows Updateが進まないという不具合があるのでこの課題をクリアして置く必要がある。

結果的には下記の順番で修正パッチを適用してやれば、無事にWindows Updateが進むようになった。れっきとした「トラブル」だと思うがマイクロソフトはそう認識していない様なので、無用な労力(スキル)を要求される。

KB976932 (windows7 SP1)※7無印の場合のみ必要
IE9の場合はIE11にアップデートする
KB3020369 (Rollupパッケージの事前必須パッケージ)
KB3125574 (Rollupパッケージ)
KB3145739 (2016年4月アップデート時短効果確認済み)
KB3161664 (2016年6月アップデート時短効果確認済み)
KB3102433 (.Net Framework 4.6.1)
KB3172605 (Rollupパッケージ)

Windows 7のプリンターテストページのドライバ情報をテキストデータで欲しい

法人環境でネットワークプリンターへの印刷時にトラブル発生。

印刷データが消失するPCと、そういう不具合が起きないPCとに分かれてしまった。印刷したハズなのにプリンターから出てこないPCは複数台あり、決まったPCでこの不具合が起きていることまで突き止めている。

そこでプリンタードライバの差異で、不具合が出る or 出ないの違いがあるのではないか?と言う推測をした。手っ取り早くドライバ情報を比較したいが遠隔地のPCでかつ台数も多い事がネックである。

プリンターテストを行うと紙に印刷される事は分かっているが、紙に印刷したものは比較しづらい(DIFFとか使えない)のでチェックするのが面倒だ。50台以上を目でチェックとなると本当に嫌になる。

そこで、バッチ処理でプリンター情報を取り出せないかなと言う発想になったが、そういえばプリンタードライバ情報を出力するVBSがWindowsに標準でついていた様な覚えがある。vbsのファイル名は覚えてないが、確かにvbsだったと記憶している。

エクスプローラで検索してみるとそれらしいファイルが入っているフォルダが見つかった。C:\windows\System32\Printing_Admin_Scripts\ja-JP

  • prncnfg.vbs
  • prndrvr.vbs
  • prnjobs.vbs
  • prnmngr.vbs
  • prnport.vbs
  • prnqctl.vbs
  • pubprn.vbs

ファイル名から容易に”prndrvr.vbs”がプリンタドライバ情報を出力してくれるであろう事は推測出来る。コマンドプロンプトから

これでドライバ情報を全て出力出来るので、別名ファイルへリダイレクトすれば目的は達成出来た。後はAWKでチェックしたい部分を抜き出してDIFFで比較チェックすれば差異を見つけられる。

幸いWindows 7にはこのVBSファイルが標準で入っているので、バッチファイルで叩いてデスクトップ等に情報を保存させれば、メールで送って貰う事も可能だろう。

ちなみにこのコマンドで使えるオプションの詳細を見たければヘルプコマンドで

たったこれだけの事だが知っていると知らないとでは大違い。出来たハズという記憶だけでも残しておくといざという時に横着出来るので、やっぱり覚えておきたい。次に使うのはいつになるか分からないけれど。

Windows Updateを2年以上実行していないPCで不具合~「WSUS Offline Update」で対処

職場ではネットに接続せずに事務処理専用にしてPC(Windows 7)を使っている部署があります。アプリは業務アプリが時々バージョンアップしているので、CD-Rで更新モジュールを読み込みネットに接続しないままアプリの更新(バージョンアップ)をして使用しています。

しかし、なぜか最近になってこのオフラインで使用している業務アプリのPCが複数台、不可解なトラブルが多いと言うので、ウィルス対策ソフトをインストールして、ネットに接続してWindows Updateを行う事にしました。セキュリティパッチを適用してくれと指示されたからです。

しかし、トラブルに遭遇しました。Windows Updateにはバグがあるらしく、待てどもWindows Updateの確認が進んでいきません。一時間、二時間と時間を無駄に待たされたのですが進む気配がありません。

もちろんWindows Update Clientは最新にしました。Windows Update Clientにもバグがあるとかでメモリーオーバーフローを起こしたりして処理しきれないという不具合もあるらしいです。KB3138612

ほとほとマイクロソフトには呆れてしまいますが、オフラインで使用しているアプリでも、開発環境のライブラリ等が更新されていく事で不具合に繋がることが今回の様に起こることがある様です。たかだかOSの分際でアプリに影響を出すというのも勘弁して欲しいと思うのですが、マイクロソフトの製品は、複雑に依存関係を作っているのでやむを得ない状態なのも理解はしています。

今回、Windows Updateがとにかく進まない状態になってしまったので、ネットワーク接続しているPCでマイクロソフトパッチをダウンロードして適用する方法に頼ることにしました。下記が参考になります。

【レビュー】Windows/Officeのオフラインアップデートディスクを作成「WSUS Offline Update」 – 窓の杜

具体的にはアプリをダウンロードして、OSと32bitか64bitを選択し、Officeの言語を選択等、任意にダウンロードしたいパッチを選択して実行すると、ローカルにMSパッチをダウンロードして適用のための実行ファイルも生成してくれます。オプションによってISOファイルを生成する事も出来ますので、複数台に適用する場合はDVD-R等に焼いて展開する事も可能なので便利です。

今回、Windows Updateが待てども進まない状態、エラーで止まる状態から先に勧めない状態に陥ってしまいましたが、WSUSの仕組みをオフラインで実現するこのアプリのおかげで先に進めました。残り数個は通常のWindows Updateで処理して最新の状態にこぎ着けました。

その結果、不可解な遅さは解消され、キビキビと業務アプリが動作する様になりました。オフラインで使用するアプリでもアプリ自体がバージョンアップする仕様の場合は、実行環境の更新が必要になることもあるんだという事を再認識させてもらったケースでした。

また、このアプリ「WSUS Offline Update – Update Microsoft Windows and Office without an Internet connection」には、他のPCでも有効に活用出来る可能性があるのではないかと感じていますので(ネットが遅い環境でWindows Updateが遅くて困ってるとか)、こういう方法とツールが考えだされていることを覚えておこうと思います。

追記(2016/11/01)

Windows7のWindows Updateが全然進まない件の対処方法(現時点)
以下の順番で適用すると良いという情報があったので記しておきます。
Windows Update カタログからKB番号で検索し、IEでダウンロード出来ました。
Firefoxではダメでした。

KB976932 (windows7 SP1)※Windows 7無印の場合のみ必要
KB3020369 (Rollupパッケージの事前必須パッケージ)
KB3125574 (Rollupパッケージ第一弾)
KB3145739 (2016年4月アップデート)
KB3161664 (2016年6月アップデート)
KB3102433 (.Net Framework 4.6.1)

しかしいっこうに進まないので更にリサーチしたところ、ロールアップには更なる情報があった。

KB3172605 (Rollupパッケージ第三弾)

KB3172605を適用して再起動するとすんなりと進むようになった。
その後、見つかった更新は78個と比較的少ない。

しかし、本当に身にならないどうでも良いスキル(知識)ですな、Windows Update不具合対処方法なんて・・・