本ページには広告が含まれています。
指定したURLのファイルをダウンロードします。第一引数にダウンロードするファイルのURL、第二引数にダウンロード先のフォルダ名、第三引数にダウンロードするファイル名を指定します。ダウンロードに成功した場合はTrue、失敗した場合はFalseを返します。
- 構文
- Boolean = DownloadFile( URL, folderspec, filename )
- 引数
- URL 必須
- ダウンロードするファイルのURL
- folderspec 省略可
- ダウンロード先のフォルダ名
- filename 省略可
- ダウンロードするファイル名
- 戻り値
- TRUE
- 成功
- FALSE
- 失敗
プログラム
//////////////////////////////////////////////////
// 【引数】
// URL : ダウンロードするファイルのURL
// folderspec : ダウンロード先のフォルダ名
// filename : ダウンロードするファイル名
// 【戻り値】
// TRUE : 成功、FALSE : 失敗
//////////////////////////////////////////////////
FUNCTION DownloadFile(URL, folderspec = "", filename = "")
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
// フォルダ名
IFB folderspec = "" THEN
// 指定がなければダウンロードフォルダ
folderspec = Shell.NameSpace("shell:Downloads").Self.Path
ELSE
// 指定したフォルダが存在しなければ
IFB !FSO.FolderExists(folderspec) THEN
PRINT "「" + folderspec + "」は存在しないフォルダです。"
folderspec = Shell.NameSpace("shell:Downloads").Self.Path
ENDIF
ENDIF
// ファイル名
IFB filename = "" THEN
// 指定がなければURLのファイル名をそのまま使う
DIM Matches = reExecute(URL, ".+/(.+?)([\?#;].*)?$")
filename = Matches.Item(0).SubMatches(0)
ENDIF
// フォルダ名とフォイル名を繋げてパスを生成
DIM path = FSO.BuildPath(folderspec, filename)
// 重複しないパスを生成
path = uniqueFilename(path)
// ダウンロードするコマンド
DIM cmd = "bitsadmin.exe /TRANSFER htmlget <#DBL>" + URL + "<#DBL> <#DBL>" + path + "<#DBL>"
// コマンドを実行
DIM res = TRIM(DOSCMD(cmd))
PRINT res
DIM flg = FALSE
// 成功時 : Transfer complete.
// 失敗時 : Unable to complete transfer.
IF POS("Transfer complete.", res) THEN flg = TRUE
RESULT = flg
FEND
//////////////////////////////////////////////////
// 【引数】
// str : 正規表現による検索の対象となる文字列
// Pattern : 正規表現で使用するパターンを設定
// IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse
// Global : 文字列全体を検索する場合はTrue、しない場合はFalse
// 【戻り値】
// 正規表現で検索した結果をMatchesコレクションとして返します。
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
DIM re = CREATEOLEOBJ("VBScript.RegExp")
re.Pattern = Pattern
re.IgnoreCase = IgnoreCase
re.Global = Global
RESULT = re.Execute(str)
FEND
//////////////////////////////////////////////////
// 【引数】
// path : ファイルのパス
// 【戻り値】
// 重複しないファイル名
//////////////////////////////////////////////////
FUNCTION uniqueFilename(path)
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.FileExists(path) THEN
DIM fol = FSO.GetParentFolderName(path)
DIM filename = FSO.GetBaseName(path)
DIM extension = FSO.GetExtensionName(path)
DIM i = 2
WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension))
i = i + 1
WEND
RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension)
ELSE
RESULT = path
ENDIF
FEND
解説
- 2行目
- Shell オブジェクトを生成しShellに代入します。
DIM Shell = CREATEOLEOBJ("Shell.Application")
- 3行目
- FileSystemObject オブジェクトを生成しFSOに代入します。
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
関連記事
- IEGETFRAME関数 (スクリプト関数)
- IESETDATA関数 (スクリプト関数)
- IESETDATA関数は、Web上に値を設定する関数です。第一引数にInternetExplorerオブジェクト、第二引数に設定する値、第三引数に値を設定するエレメントのNameもしくはタグ名を記述します。
- BusyWait関数 (自作関数)
- IEオブジェクトの読み込みが完了するのを待ちます。
- IE.ExecWB メソッド
- コマンドを実行します。
- IE.GoForward メソッド
- 履歴リストの1つ後の項目に移動します。
- IE.Refresh2 メソッド
- 指定されたリフレッシュレベルで現在表示されているファイルを再読み込みします。
- IE.Stop メソッド
- 読込中のWebページやダウンロードのキャンセル、BGMやアニメーションの動的要素を停止します。
- getIEObj関数 (自作関数)
- 引数に指定したタイトルまたはURLを含むIEオブジェクトを返します。戻り値はInternetExplorerオブジェクトです。
- IE.Navigate メソッド
- URLまたは絶対パスで指定されたファイルを開きます。
- IE.Document プロパティ
- ドキュメントオブジェクトを取得