【AutoIt】指定したURLから画像をダウンロードするスクリプト

インターネット上で見つけた画像を、自分の PC に保存したい場面はよくあります。

ブラウザーで右クリックして「名前を付けて画像を保存」と操作するのが一般的ですが、この手順を自動化できると、より大きなスクリプトの中で画像を取得したり、複数の画像を連続でダウンロードしたりと、様々な応用が可能になります。

今回は、AutoIt を使って指定した URL の画像ファイルを、デスクトップにダウンロードして保存する、基本的なスクリプトの作り方を解説します。

目次

完成したスクリプトの全コード

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <InetConstants.au3>

; ### 設定項目 ###
; ここに、ダウンロードしたい画像のURLを入力します
Local $sImageURL = "https://autoit.windows-waza.com/wp-content/uploads/2025/08/ダウンロード用サンプル画像.png"


; ### メイン処理 ###

; 1. URLからファイル名部分を抽出する
Local $aURL_Split = StringSplit($sImageURL, "/")
Local $sFileName = $aURL_Split[$aURL_Split[0]] ; 配列の最後の要素がファイル名

; 2. 保存先のフルパスを定義する (デスクトップ + ファイル名)
Local $sSavePath = @DesktopDir & "\" & $sFileName

; 3. InetGet関数を使ってファイルをダウンロードする
Local $iBytesDownloaded = InetGet($sImageURL, $sSavePath, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)

; 4. ダウンロードの完了を待つ
While InetGetInfo($iBytesDownloaded, $INET_DOWNLOADCOMPLETE) = 0
    Sleep(250)
Wend

; 5. 実行結果を判定して表示
If FileExists($sSavePath) And FileGetSize($sSavePath) > 0 Then
    MsgBox($MB_OK, "成功", "画像のダウンロードが完了しました。" & @CRLF & "保存先: " & $sSavePath)
    ShellExecute(@DesktopDir) ; 保存先のデスクトップを開く
Else
    MsgBox($MB_ICONERROR, "失敗", "画像のダウンロードに失敗しました。")
EndIf

コードの詳しい解説

URL からファイル名の抽出

まず、ダウンロードしたファイルを元の名前で保存するために、URL からファイル名部分だけを抜き出す必要があります。

Local $aURL_Split = StringSplit($sImageURL, "/")
Local $sFileName = $aURL_Split[$aURL_Split[0]]
  • StringSplit: この関数は、指定したURLを「/」で分割し、結果を配列として返します。
  • $aURL_Split[0]: 配列の 0番目の要素には、分割してできた要素の総数が格納されています。
  • $aURL_Split[$aURL_Split[0]]: これにより、配列の最後の要素、つまり URL の末尾にあるファイル名(例: ダウンロード用サンプル画像.png)を取得できます。

配列の内容は、次のようになっています。

IndexValue
08
1https:
2
3autoit.windows-waza.com
4wp-content
5uploads
62025
708
8ダウンロード用サンプル画像.png

InetGet によるダウンロード

このスクリプトの心臓部が、インターネットからファイルを取得するためのInetGet関数です。

InetGet($sImageURL, $sSavePath, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
  • 第1引数: ダウンロードしたいファイルの URL を指定します。
  • 第2引数: ダウンロードしたファイルを保存する、PC 上のフルパスを指定します。
  • 第3引数 ($INET_FORCERELOAD): キャッシュを無視し、常にサーバーから最新のファイルをダウンロードするようにします。
  • 第4引数 ($INET_DOWNLOADBACKGROUND): ダウンロードをバックグラウンドで行い、その間もスクリプトの他の処理を止めないようにします。この関数は、ダウンロード処理のハンドル(識別番号)を返します。

ダウンロード完了の待機

$INET_DOWNLOADBACKGROUNDを指定した場合、InetGetはダウンロードが完了するのを待たずに次の行へ進んでしまいます。そのため、ダウンロードが終わるまで待機する処理が必要です。

While InetGetInfo($iBytesDownloaded, $INET_DOWNLOADCOMPLETE) = 0
    Sleep(250)
Wend

InetGetInfo関数を使い、ダウンロードが完了した($INET_DOWNLOADCOMPLETEが「1」になる)かどうかをWhileループで定期的にチェックし、完了するまで待機します。

まとめ

InetGet は、画像だけでなく、あらゆる種類のファイルをインターネットからダウンロードできる、非常に強力な関数です。

ウェブサイトから特定のファイルを定期的に取得したり、アプリケーションのアップデータをダウンロードしたりと、インターネットと連携する自動化スクリプトを作成する上で、欠かすことのできない基本テクニックです。

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次