PR

スプーラをバッチファイルで再起動する

XWSS019838_s4

ちょっと複雑かもしれない環境であれやこれやを実行している。どうやら、稀に期限が悪くなってしまうらしく、印刷ができなくなってしまう。パソコンを再起動すれば問題ないが、良い選択肢とはいえない。調べてみると手動で Print Spooler を再起動すれば良いらしいことがわかった。だが、これもまた良い選択肢とはいえない。

スポンサードリンク

Print Spooler を再起動する

バッチファイルにしてサクッと問題を解決する方法は次の通り:

net stop "Print Spooler"
net start "Print Spooler"

注:実行するコマンド・プロンプトまたはバッチファイルは、管理者権限で実行すること

これで問題は解決するかに見えたし、実際に問題は解決したのだが、それでもなお問題に遭遇する事はあるようだ。以下は筆者環境に依るところが大きいが、何かの参考になるかもしれないので備忘録として残しておく。

スプールファイルを削除

スプーラーを再起動するついでに、スプールされたファイルも削除しておく事ができるようだ。次の方法はマイクロソフト社のウェブページに記載されていた例:

del %systemroot%\system32\spool\printers\*.shd
del %systemroot%\system32\spool\printers\*.spl

特定のプロセスを終了

LAN経由でUSB機器を利用する便利アイテムを利用している。ついでなので、これも再起動する。コマンド・リファレンスは用意されていないようなので、バッチファイル内でプロセスを特定して終了させる方法を採用した。

taskkill /im "Control Center.exe" /f /t

上記のようにTaskKill を利用する事で実行でき、Linux のKill コマンドのように指定されたプロセスを終了させる事ができるようだ。/im ImageName とすることで、指定したイメージファイルからプロセスを特定してくれる便利機能付き。/f とすれば強制的に、/t とすればプロセスツリーを終了してくれる。

ちなみに、起動する場合は次のようになるだろうか:

"C:\Program Files\NEC Printers\SimpleMonitor\NEJPPSPZ.EXE" /P

NEC SimpleMonitor を終了する

MultiWriter 5600C (PR-L5600C) モニタを行うソフトウェアを終了するには、「NEC SimpleMonitor Status Watcher」 を終了する。ついでに「NEC SimpleMonitor Status Database」を終了する。ちなみに「NEC SimpleMonitor Status Database」を終了するには「NEC SimpleMonitor Status Watcher」を終了させておく必要があり、さらに、Print Spooler を終了する前に終了しておく必要があるようだ。つまり、次の順に終了させる必要があるようだ:

  1. NEC SimpleMonitor Status Watcher を終了
  2. NEC SimpleMonitor Status Database を終了
  3. Print Spooler を終了

実装例は次のようになるだろうか:

net stop "NESMJPPWD"
net stop "NESMJPSDB"
net stop "Print Spooler"

コード例

@echo off

rem 2014.05.20 Ver.0.1.37
rem By pc.casey.jp, MIT License

echo Print Spooler を再起動する準備を開始します...

echo  * USB共有センター を終了しています...
taskkill /im "Control Center.exe" /f /t >NUL

echo  * NEC SimpleMonitor Status Watcher を終了しています...
net stop "NESMJPPWD" >NUL

echo  * NEC SimpleMonitor Status Database を終了しています...
net stop "NESMJPSDB" >NUL

echo  * Print Spooler を終了しています ...
net stop "Print Spooler" >NUL

echo  * スプールファイルを削除しています...
del %systemroot%\system32\spool\printers\*.shd /q >NUL
del %systemroot%\system32\spool\printers\*.spl /q >NUL

echo Print Spooler を起動する準備を開始します...

echo  * Print Spooler を開始しています ...
net start "Print Spooler" >NUL

echo  * NEC SimpleMonitor Status Watcher を開始しています...
net start "NESMJPPWD" >NUL

echo  * NEC SimpleMonitor を開始しています...
"C:\Program Files\NEC Printers\SimpleMonitor\NEJPPSPZ.EXE" /P >NUL

echo  * USB共有センター を開始しています...
start "" "C:\Program Files (x86)\corega\USB共有センター\Control Center.exe" >NUL

echo 完了しました
echo 何かキーを押すと終了します
pause >NUL

.

コメント