2
4

More than 3 years have passed since last update.

バッチファイルでファイルをダウンロードする(プロキシ・失敗考慮)

Posted at

Y子です。
今日は、ファイルをダウンロードしてみます。HTTPリクエストってやつです。

概要・用途・注意

決まったURLのファイルをダウンロードするバッチファイルです。
http://example.jp/daily_data.csv を、 savefile.csv という名前で保存してみます。
たとえば、「毎日更新されるファイルをダウンロードして上書きし、業務に使う」なんて場合を想定しています。
curl」というコマンドを使いますが、これはWindows 10のRS3(2018年)から標準で付属しているようです。(参考

コード

(1) シンプルな例

単純に、ダウンロードして保存します。

download_file_simple.bat
@echo off

rem ダウンロードしたいファイルのURL
set str_url="http://example.jp/daily_data.csv"

rem 保存するファイル名
set str_savefile=savefile.csv

rem ダウンロード実行
curl %str_url% > %str_savefile%

pause

(2) プロキシを考慮した例

社内ネットワークなど、認証が必要なプロキシがある場合はこちら。

download_file_proxy.bat
@echo off

rem ダウンロードしたいファイルのURL
set str_url="http://example.jp/daily_data.csv"

rem 保存するファイル名
set str_savefile=savefile.csv

rem プロキシのユーザ名、パスワード、サーバ名、ポート番号
set pid=username
set ppw=password
set psv=proxy.example.jp
set ppt=8080

rem ダウンロード実行(プロキシ考慮)
curl %str_url% -x http://%pid%:%ppw%@%psv%:%ppt% > %str_savefile%

pause

(3) ダウンロード成否を判定する例

ダウンロードに失敗する可能性がある場合を考慮します。
失敗データ(空ファイル)を、既存のファイルに上書きしてしまうと悲しいですので…。

ダウンロードしたものをいったん一時ファイルとして保存し、空でなければ採用する、という2段構えにしました。

download_file_cmp.bat
@echo off

rem ダウンロードしたいファイルのURL
set str_url="http://example.jp/daily_data.csv"

rem 一時保存するファイル名
set str_tmpfile=tmpfile.csv

rem 保存するファイル名
set str_savefile=savefile.csv

rem ダウンロード実行(一時保存)
curl %str_url% > %str_tmpfile%

rem 一時保存ファイルのサイズを取得するおまじない
for %%i in (%str_tmpfile%) do set size=%%~zi

rem ダウンロード失敗の場合(空ファイルの場合)
if %size%==0 (
  rem 一時保存ファイルを削除
  del %str_tmpfile%
  echo ×失敗×

rem ダウンロード成功の場合
) else (
  rem 古い保存ファイルがあったら消す
  if exist %str_savefile% (
    del %str_savefile%
  )
  rem 一時保存ファイルを保存ファイルにリネーム
  ren %str_tmpfile% %str_savefile%
  echo ○成功○
)

pause
実行結果
> download_file_cmp.bat
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12425  100 12425    0     0  12425      0  0:00:01 --:--:--  0:00:01 39696
○成功○
続行するには何かキーを押してください . . .

おわりに

毎日ブラウザから保存していたファイルが、バッチファイルを叩くだけで保存できてしまうのは便利です。
自分が作ったツールで業務改善できると、ちょっと嬉しくなります。

ではまた!

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4