更新日:2021/12/08
このページではWindows Powershell 環境において複数のファイルを一括ダウンロードするサンプルコードを紹介します。
自動的に複数のファイルをインターネットやイントラネットから入手する場合に参考にしてください。
次の例では3個のファイルをインターネットからダウンロードしています。3個のファイルはスクリプト内で定義しています。
ファイルは具体的にリストファイルである $DownloadURLs で定義しています。このリストの中を増やすことによりダウンロード数を増やすことが可能です。
サンプルコード:
#WebClientオブジェクトを生成する
$WebClient = New-Object System.Net.WebClient
#ダウンロードするファイルのリスト
$DownloadURLs = @("http://tooljp.com/test01.html","http://tooljp.com/test02.html","http://tooljp.com/test03.html")
#ファイルリストから順番に取得する
$DownloadURLs | foreach{
$URI = New-Object System.Uri($_)
#URI からファイル名のみ取り出す。要するに http://example.com/test01.html から test01.html のみ取り出す。
$FileName = $URI.LocalPath
$FileName = $FileName.Replace("/","")
#c:\temp にファイルをダウンロードする
$WebClient.DownloadFile($URI, "c:\temp\"+$FileName )
}
次の例では、ダウンロードするファイルのリストをスクリプト内ではなく外部ファイルで定義しています。
外部ファイルはc:\temp\downloadlist.txt で定義しています。メモ帳で Shift-JIS (ANSI) で作成しています。
もし指定したファイルが存在しない場合は次のように"(404) 見つかりません"エラーが発生します。
"2" 個の引数を指定して "DownloadFile" を呼び出し中に例外が発生しました: "リモート サーバーがエラーを返しました: (404)
見つかりません"
ファイルにアクセス権が設定されていない場合は次のように"(403) 使用不可能""というエラーが発生します。
"2" 個の引数を指定して "DownloadFile" を呼び出し中に例外が発生しました: "リモート サーバーがエラーを返しました: (403)
使用不可能"
サンプルコード:
#WebClientオブジェクトを生成する
$WebClient = New-Object System.Net.WebClient
#ファイルリストから順番に取得する
foreach($u in Get-Content "c:\temp\downloadlist.txt ") {
$URI = New-Object System.Uri($u)
#URI からファイル名のみ取り出す。要するに http://example.com/test01.html から test01.html のみ取り出す。
$FileName = $URI.LocalPath
$FileName = $FileName.Replace("/","")
#c:\temp にファイルをダウンロードする
$WebClient.DownloadFile($URI, "c:\temp\"+$FileName )
}
[Powershell FAQ トップへ]
[FAQ CENTER トップ]
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018