如何在 Windows 系統上一次批量下載多個文件

若要在 Windows 系統上批次下載多個文件,請將每個文件的直接 URL 分別寫在文字檔案的每一行,然後使用 PowerShell 將這些文件儲存到一個資料夾中。這種內建的工作流程可以避免重複點擊,並記錄失效的連結以便您進行檢查。

舊文章中提到了一個單獨的批次下載工具,但其引用的下載來源和當前的 Windows 相容性無法驗證。本指南改用 Windows PowerShell 和微軟的最新文件。

準備一個資料夾和一份直接連結列表

  1. 在「文件」資料夾中建立一個名為BulkDownload 的資料夾。在該資料夾中,建立一個名為 . 的純文字檔案urls.txt。
檔案總管顯示在「文件」中建立的 BulkDownload 資料夾
建立一個專門的資料夾,用於存放網址清單和下載的檔案。
  1. 請在記事本中開啟urls.txt文件,每行貼上一個直接文件 URL。直接連結指向文件,例如 ZIP 壓縮包或圖片;包含下載按鈕的頁面連結可能會保存網頁內容。空行將被忽略。以下 example.org 位址僅為佔位符,並非可下載連結。
記事本顯示了 urls.txt 檔案中四個 example.org 檔案的直接 URL。
每行保留一個直接的文件連結。將佔位符連結替換為您有權下載的連結。

請使用您有權訪問的鏈接,並檢查目標位置是否有足夠的可用空間。伺服器可能會阻止自動請求、要求登入或限制檔案下載速度。

使用 PowerShell 下載列表

  1. 在同一資料夾中,download.ps1用記事本建立一個資料夾。貼上以下腳本並儲存。該腳本會建立一個downloads子資料夾,透過在重複檔案名稱後添加數字來確保現有檔案的安全,並將失效的 URL 寫入一個單獨的文字檔案。
$urls = @(Get-Content -LiteralPath .\urls.txt |
    ForEach-Object { $_.Trim() } |
    Where-Object { $_ -ne '' })

$destination = Join-Path $PWD 'downloads'
New-Item -ItemType Directory -Path $destination -Force | Out-Null
$failed = @()

for ($i = 0; $i -lt $urls.Count; $i++) {
    $url = $urls[$i]
    try {
        $uri = [uri]$url
        if ($uri.Scheme -notin @('http', 'https')) {
            throw 'Only HTTP and HTTPS URLs are supported.'
        }

        $name = [System.IO.Path]::GetFileName(
            [uri]::UnescapeDataString($uri.AbsolutePath)
        )
        if ([string]::IsNullOrWhiteSpace($name)) {
            $name = "download-$($i + 1)"
        }
        $name = $name -replace '[<>:"/\\|?*]', '_'

        $baseName = $name
        $suffix = 1
        while (Test-Path -LiteralPath (Join-Path $destination $name)) {
            $name = "$suffix-$baseName"
            $suffix++
        }

        $path = Join-Path $destination $name
        $request = @{
            Uri = $uri.AbsoluteUri
            OutFile = $path
            ErrorAction = 'Stop'
        }
        if ($PSVersionTable.PSVersion.Major -eq 5) {
            $request.UseBasicParsing = $true
        }
        Invoke-WebRequest @request
        Write-Host "Saved $name"
    }
    catch {
        $failed += $url
        Write-Warning ("Failed: {0} -- {1}" -f $url, $_.Exception.Message)
    }
}

$failed | Set-Content -LiteralPath .\failed-urls.txt -Encoding UTF8
if ($failed.Count -gt 0) {
    Write-Warning "$($failed.Count) URL(s) failed. See failed-urls.txt."
} else {
    Write-Host "$($urls.Count) file(s) downloaded."
}

Invoke-WebRequest用於-OutFile將每個回應儲存為檔案。腳本-UseBasicParsing在 Windows PowerShell 5.1 中執行時會新增此設定;PowerShell 7 預設使用安全性解析。 Microsoft 建議在 Windows PowerShell 5.1 中啟用此開關,以避免 2025 年 12 月發布的更新引入的安全確認提示。請參閱Microsoft 的 Invoke-WebRequest 參考文件及其PowerShell 5.1 安全性指南。

檔案總管開啟 BulkDownload 資料夾,urls.txt 檔案可見。
請將 URL 清單和 PowerShell 腳本放在同一個工作資料夾中。
Windows PowerShell 顯示從 urls.txt 讀取的 URL
在啟動批次處理之前,請檢查 PowerShell 是否可以讀取 URL 清單。

運行批次並檢查結果

  1. 在檔案總管中開啟 BulkDownload 資料夾。如果可用,請選擇「在終端機中開啟」,或開啟 Windows PowerShell 並切換到該資料夾Set-Location -LiteralPath "$env:USERPROFILE\Documents\BulkDownload"。使用 `--command` 指令確認列表Get-Content .\urls.txt,然後執行腳本.\download.ps1。如果腳本被貴組織的執行策略阻止,請勿降低電腦範圍的設定;請諮詢管理員或將檢查過的命令貼到互動式 PowerShell 工作階段。
  2. 保持視窗打開,直到提示符號返回。成功儲存的檔案會出現在控制台中downloads;控制台會為每個檔案列印一行「已儲存」。開啟幾個文件,確認它們已儲存且類型正確。
PowerShell 顯示三個檔案下載成功的狀態行
PowerShell 會報告它保存的每個文件,並在佇列完成後返回提示符。
檔案總管顯示下載資料夾中有 ZIP 壓縮檔和一個 JPG 文件
下載的檔案都收集在下載子資料夾中。

修復失效連結並避免覆蓋文件

如果 URL 傳回 404 錯誤,則可能是檔案已移動或連結輸入錯誤。 403 或登入頁面通常表示伺服器需要腳本沒有的權限或瀏覽器會話。請在瀏覽器中開啟鏈接,如果網站提供了實際的文件 URL,請複製該 URL 並更新腳本urls.txt。腳本會在遇到個別失敗後繼續執行,並將遺失的連結儲存到腳本中failed-urls.txt。

PowerShell 報告 404 錯誤,並確認 failed-urls.txt 檔案已儲存。
報告請求失敗,但不會停止其餘 URL 的存取。
記事本顯示 failed-urls.txt 檔案中 example.org 檔案的 URL 錯誤
檢查 failed-urls.txt 文件,更正鏈接,如有必要,將其重新添加到隊列中。

這個簡單的大量下載工具會一次下載一個檔案;它的速度並不比瀏覽器或並行下載管理器更快。非常大的佇列可能需要一些時間,因此請遵守主機的速率限制和條款。具有臨時存取令牌的 URL 可能會授予對私有檔案的存取權限,因此請務必妥善保管這些令牌urls.txt。failed-urls.txt如果 URL 將檔案名稱隱藏在查詢字串中,則腳本可能會將其儲存為download-1類似名稱;請在確認檔案內容後重新命名。

留下評論

使用 FotoSketcher 將照片轉換為繪畫、素描和卡通

使用 FotoSketcher 將照片轉換為繪畫、素描和卡通

使用 FotoSketcher Studio 將照片轉換成繪畫、鉛筆素描或卡通。學習如何選擇效果、調整預覽、保存作品。

使用音訊標識符詳細分析和識別音訊文件

使用音訊標識符詳細分析和識別音訊文件

了解音訊標識符揭示的位元率、編碼器和標籤訊息,其傳統工作流程如何運作,以及當前哪些工具可以檢查文件或識別歌曲。

我的照片索引:一款適用於 Windows 的開源照片管理器。

我的照片索引:一款適用於 Windows 的開源照片管理器。

My Photo Index 是一款舊版 Windows 相片目錄管理工具,用於標記、評分和瀏覽本機影像。請查看其文件功能、相容性限制以及一個維護良好的替代方案。

使用屬性變更器變更檔案和資料夾屬性、日期和時間

使用屬性變更器變更檔案和資料夾屬性、日期和時間

學習如何使用屬性變更器安全地編輯 Windows 檔案屬性和時間戳記、更新 JPEG EXIF 照片日期以及預覽批次變更。

如何在 Windows 10 中為每個顯示器設定不同的桌布

如何在 Windows 10 中為每個顯示器設定不同的桌布

為每個 Windows 10 顯示器設定單獨的壁紙,識別顯示器,調整影像適應度,並解決缺少顯示器選擇的問題。

pViewer:一款極簡圖像檢視器和漫畫閱讀器

pViewer:一款極簡圖像檢視器和漫畫閱讀器

了解 pViewer 的功能、照片和漫畫模式的工作原理、應該下載哪個 Windows 版本,以及舊版和重寫版之間的差異。

如何在 Windows 7 和 8 中使用快速鍵切換到下一個桌面背景

如何在 Windows 7 和 8 中使用快速鍵切換到下一個桌面背景

設定 Windows 7 或 8 投影片放映,建立一個小型 VBScript 快捷方式,並指派鍵盤熱鍵來切換到下一張桌布。

NeoDownloader:設定參數並從網站批量下載圖片

NeoDownloader:設定參數並從網站批量下載圖片

學習如何建立 NeoDownloader 專案、選擇爬取範圍、設定映像過濾器和目標位置,以及查看批次下載。

XnConvert:批次應用特效和轉換影像格式

XnConvert:批次應用特效和轉換影像格式

使用 XnConvert 可以批次套用特效、調整照片大小和轉換影像格式。選擇輸出設定、預覽編輯效果並保護您的原始文件。

使用 ManicTime 追蹤工作時間和電腦使用情況

使用 ManicTime 追蹤工作時間和電腦使用情況

了解 ManicTime 如何追蹤應用程式使用情況、活躍時間和空閒時間以及文檔,然後將您的活動歷史記錄轉換為專案標籤和時間表。