Windowsメモ: コマンドプロンプトからインターネット上のファイルをダウンロードする (curl, Invoke-WebRequest, bitsadmin)

curl コマンド(Windows 10 バージョン 1803 以降)

Windows 10 バージョン 1803 以降では curl コマンドが標準搭載されています。 -o オプションで保存先のファイル名を指定します。

例: ファイルをダウンロードして保存
C:\> curl -o sample.png https://example.com/sample.png

-O(大文字)を使うと、URL のファイル名をそのまま保存先のファイル名として使用します。

例: URL のファイル名のままダウンロード
C:\> curl -O https://example.com/sample.png

プロキシ経由でダウンロードする場合は -x オプションでプロキシを指定できます。

C:\> curl -x http://proxy.example.com:8080 -o sample.png https://example.com/sample.png

PowerShell を使う方法

PowerShell が使える環境では、より柔軟なダウンロードが可能です。

Invoke-WebRequest コマンドレット

Invoke-WebRequest(エイリアス: iwrwgetcurl)を使う方法です。

例: ファイルをダウンロードして保存
Invoke-WebRequest -Uri "https://example.com/sample.png" -OutFile "C:\dir\sample.png"

Start-BitsTransfer コマンドレット

BITS(Background Intelligent Transfer Service)を利用するため、大きなファイルのダウンロードに向いています。 バックグラウンドでの転送や、中断・再開にも対応しています。

例: ファイルをダウンロードして保存
Start-BitsTransfer -Source "https://example.com/sample.png" -Destination "C:\dir\sample.png"

バッチファイルから PowerShell コマンドを呼び出すこともできます。

例: バッチファイルから Invoke-WebRequest を呼び出す
@echo off
powershell -Command "Invoke-WebRequest -Uri 'https://example.com/sample.png' -OutFile '%CD%\sample.png'"

bitsadmin コマンド(レガシー)

bitsadmin は Windows に標準搭載されているファイルダウンロード用のコマンドラインツールです。 ただし、Windows 10 以降では非推奨となっており、後述の PowerShell や curl を使用することが推奨されています。

bitsadmin コマンドの構文は以下の通りです。

bitsadmin /transfer <ジョブ名> <URL> <保存先ファイル名>
  • <ジョブ名>: ジョブを識別するための任意の文字列です。例: myjob
  • <URL>: ダウンロードするファイルの URL。例: https://example.com/sample.png
  • <保存先ファイル名>: ダウンロードしたファイルの保存先を示すローカルパスです。フルパスで指定する必要があります。例: C:\dir\sample.png
例: カレントディレクトリに logo.png という名前でダウンロード
C:\> bitsadmin /transfer myjob https://example.com/sample.png %CD%\sample.png

保存先のファイルパスはフルパスで指定しなければいけないため、変数 %CD% を使用してカレントディレクトリのパスを結合しているところがポイントです。