PDFファイルをどばっとまとめてファイル名順(昇順)で印刷したい!BatでAdobeReaderDCで印刷する!
この記事は投稿は1年以上経過しており、最新の情報でない場合があります。
ご注意下さい。
確定申告の書類で、同じフォルダ内にあるpdfファイルをどばっとまとめてファイル名順に印刷したい!
ファイルをどばっと選択して、プリンターに送れば印刷はできる・・・、
でも、印刷するのが数枚なら良いけど、
100枚とかあると同時印刷の上限に引っかかっちゃうし、順不同だし。
ん~、
Batでいけないかな・・・・
助けてGoogle先生!
ありがとう!感謝!
ポイントはひとつ!
に書いてある
/tオプション
Adobe Reader を起動し、印刷ダイアログボックスを表示せずに PDF ファイルを印刷し、Adobe Reader を終了する
現状この/tオプションをつけてもAdobeReaderを終了されませんw
(初回起動時のみ、一枚でも開いていれば期待通りの動作)
私のPC内に入っているのは
Acrobat Reader DC
・・・なので、タスクマネージャからプロセス名を調べて
、参考サイトからスクリプトをお得意のコピペしてちょこっと改変しました
↓
スポンサーリンク
概要
・まず、PDFファイルがあるフォルダの中に以下Batファイルを入れる。(テキストファイルを新規作成。ファイル名.bat の様に拡張子をbatに変えて、以下コードをコピペ)
・batファイルが起動したらAdobeReaderDCが立ち上がるので立ち上がったら何かキーを押す。
すると
順にファイルを印刷していきます、5秒のWaitを入れているのでPCがいきなりフリーズするほど重くはならないかと、
もし、マシンスペックが低い場合はこのtimeoutの数値を増やして良い塩梅にしてあげると吉かと。
参考サイト(コピペ元)の最下段「taskkill /im Acrobat.exe」は印刷実行中のadobeReaderまでまとめてTaskKillしてたので外しました。
1 2 3 4 5 6 7 8 |
@echo off start "" "AcroRd32.exe" pause for %%i in (*.pdf) do ( echo 印刷中 %%i START ACRORD32.EXE /n /t "%%i" timeout 5 ) |
ホントは1ファイル印刷が終わって、AdobeReaderが終了するのを確認してから次のファイル印刷へと進んだ方が良いよね!
うん!
良いはず!って感じでBatを書いてたんだ。
だけど、プロセス監視の処理が出てきて、
わりに合わないと感じ始めた途端、
めんどくなって来たのでtimeoutでウェイトを入れただけになりましたw
まぁ、たまに使えそうなので防備録として残しておきます。
以下副産物
①adobeReaderDCのPIDを取得して変数に格納するbat(複数プロセスがあるので、スペース区切りで格納してます)
1 2 3 4 5 6 7 8 9 10 |
@echo off SETLOCAL ENABLEDELAYEDEXPANSION set x for /F "usebackq tokens=2" %%a in ( `tasklist /fi "IMAGENAME eq AcroRd32.exe" ^| findstr "[0-9]"`) do ( echo %%a set x=%%a !x! ) echo ■!x!■ pause |
②WaitPrgLoop.bat
プロセス名を引数で渡して、指定プロセスが終了するまで待つbat
1 2 3 4 5 6 7 8 9 10 11 |
@ECHO OFF echo 監視開始 %1 timeout 1 > nul :MAINLOOP TASKLIST | FIND "%1" > NUL IF NOT ERRORLEVEL 1 ( echo 実行ファイルある timeout 1 > nul GOTO MAINLOOP ) ECHO 終了処理 |
bat中から
call WaitPrgLoop.bat AcroRd32.exe
って感じで渡してあげると吉、だけどAdobeReaderは/tオプションを付けても窓が一枚残るのでプロセス名で監視してもダメw
なので、初回時に起動しっぱなしになるAdobeReaderのPIDを①で取得して、
そのPIDを除外したAdobeReader(印刷処理をする方)を監視して、終了するまで待つ。
・・・で、次のファイルの処理って感じにすればお行儀の良さそうなbatファイルができそう。
7割くらい作った気がするけど、今回はリタイアですw
以下未完成のメモ(ちゃんと動きません)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
for %%i in (*.pdf) do (
echo 印刷中 %%i
START ACRORD32.EXE /n /t “%%i”
call WaitPrgLoop.bat AcroRd32.exe
echo 次のファイル
pause
)
もう、必要なファイルをどばっと印刷しちゃったので続き作るとしても1年後だな。
今はbat作るよりも確定申告の入力が待ってるんだ。
スポンサーリンク
コメントはまだありません。