DownloadFile

指定したURLのファイルをダウンロードします。第一引数にダウンロードするファイルのURL、第二引数にダウンロード先のフォルダ名、第三引数にダウンロードするファイル名を指定します。ダウンロードに成功した場合はTrue、失敗した場合はFalseを返します。

構文
  1. 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 fol = FSO.GetParentFolderName(path) filename = FSO.GetBaseName(path) extension = FSO.GetExtensionName(path) 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

この記事は役に立ちましたか?
役に立った 役に立たなかった