バッチファイルでファイル名が連番のURLから一括でダウンロードする方法【HTML5 Webook】
目的
ここでは題にもある通り、ある複数のURLからファイルをダウンロードしたいとき、
またそのファイル名が連番であるときに一括でそのファイルをダウンロードするバッチファイルを作ってみた。
このバッチファイルは私のサイトにアップロードされているテスト用のPDF(ファイル名の数字を変更すれば確認可能)が1~10枚ダウンロードされる仕組み
コードは下記からダウンロード可能
背景
妹に約260枚のPDFを印刷したいと言われた。
てっきり、一つのPDFファイルに260枚入ってるのかと思ったら、「HTML5-Webook」というサービスでまるでカタログのように閲覧できるようになっていた。
「すごく見やすいじゃん!!」と感動したのもつかの間、、
印刷ボタンを押すとその開いてるページ(見開き2ページ)しか印刷できないのだ!
どうやら1つのPDFファイルに1枚しか入っておらず、それがサービスによって纏められていた
(もう嫌な予感しかしない)
さすがに手作業でダウンロードするわけにもいかないのでバッチファイルを書くことにした。
作成したバッチファイル
バッチファイルについて
今回はバッチファイルについてや使用方法などには触れずにいこうとおもう。
初心者の方は下記のサイトがとても詳しくわかりやすいので参考にしてみてはいかがだろうか
【Windows 10対応】Windowsのバッチファイルの基本的な使い方
Zipファイルのディレクトリ構成
Zipファイルをデスクトップで解凍することを想定しています。
使い方は後述します。
Desktop — download-pdf — pdf
|
|– download_pdf.bat
コード全体
使い方
- ダウンロードしたZipファイルをデスクトップに解凍してください
- download_pdf.bat というファイルを選択して、右クリックし編集(E)を選択
(エディタがある方はそちらで)


ダウンロードしたファイルを編集ことにより、このような警告が出た場合は詳細情報を選択し、実行ボタンを押す。


- するとメモ帳が開きますので、ここで編集していきます。
- ダウンロードを行うURLを確認します。
*URLの複数のファイル名が規則的に連番である必要があります!
https://talk-to-myself.com/wp-content/uploads/2020/04/1.pdf
https://talk-to-myself.com/wp-content/uploads/2020/04/2.pdf
https://talk-to-myself.com/wp-content/uploads/2020/04/3.pdf - 上記の例のURLをみてわかる通り”https://ta~2020/04/”まで同じです。
この同じ部分を9行目のように記述します。
set url_location=(変わらない部分のURL)
set url_location=https://talk-to-myself.com/wp-content/uploads/2020/04/
- ダウンロードするページ範囲を14行目のように書きます
下の例だと1~5まで1枚ずつ(0枚飛ばし)でダウンロードします。
for /l %%n in (初めのページ,ページの間隔,最後のページ) do (
for /l %%n in (1,1,10) do (
- URLの変化する部分について18行目に書いてます。
set url=%url_location%!num!(変わらない部分)
set url=%url_location%!num!.pdf
ここが少しややこしいのですが簡単に説明すると下の図のようになります。
・ %url_location% : 変わらない部分のURL
・ !num! : 変わる部分のURLでさっき指定した数になります。(1~5)

URLの変わる部分と変わらない部分を分けて置き換えてるようなイメージですね。
“.pdf”は変わらないのでそのまま書いています。
もし、https://talk-to-myself.com/wp-content/uploads/2020/04/page-1-page.pdfのようなURLだったら
set url=%url_location%page-!num!-page.pdf
というように書けばいいですね
- 上書き保存をしてバッチファイルの編集は終わりです。
- 今度はdownload_pdf.batをダブルクリックで実行します。
- pdfというフォルダにpdfファイルが格納されてれば成功です。

コードの中身が気になる方は下記に簡単にまとめておきました。
コードの説明
特定のURLからダウンロードするコマンドの書き方
bitsadmin /transfer <ジョブ名> <URL> <保存場所>
・ジョブ名 : 何でもよい、わかりやすいもの
・URL : ダウンロード元のURL
・保存場所 : フルパスでの記述 C:/Users/username/Desktop/ みたいな感じで
今回は下記のように記述
・ジョブ名 : pdf ・URL : !url! ・保存場所 : “!file!”
bitsadmin /transfer pdf !url! “!file!”
説明がややこしくなるので単なる変数(値を入れる箱)だと思ってよい
変数の定義
set location=(変数 : 変わらないURL部分)
set location=%homedrive%%homepath%/Desktop/download-pdf/pdf/
コメント
rem (コメント)

~ コンセプト ~
ものづくりのハードルを下げたい!
【現在のキャリアと実績】
1998年生まれ。高専生。専門はロボットハンドの開発。中学2年時にケニアでボランティアを経験。高専3年(高校3年)時にはシンガポールで海外インターンを経験。
現在は高専で学生をしながら、ベンチャー企業で新製品の設計や個人のWebサイトを運営しております。
小規模なWeb制作の依頼も承っております。
機械の設計、電気回路、プログラミングなどの”ロボット”全般に関する知識があります。