我想使用 Windows 10 下载某个 URL 上的所有内容,例如
https://example.com/folder
这个文件夹可能包含 100 个文件,我想把它们都放进
C:\backups
我将安排该脚本每小时运行一次,并且我不希望它下载已经存在的文件。
我尝试过一些脚本,例如:
bitsadmin.exe /transfer "test" https://website.com/folder/ C:\backups
没有任何成功,注意:我对批处理脚本的经验很少
答案1
您将在文章中找到几个有用的 PowerShell 脚本 如何从 URL 下载所有文件?
以下是其中之一:
$outputdir = 'D:\Downloads'
$url = 'https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/daily/kl/recent/'
# enable TLS 1.2 and TLS 1.1 protocols
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12, [Net.SecurityProtocolType]::Tls11
$WebResponse = Invoke-WebRequest -Uri $url
# get the list of links, skip the first one ("../") and download the files
$WebResponse.Links | Select-Object -ExpandProperty href -Skip 1 | ForEach-Object {
Write-Host "Downloading file '$_'"
$filePath = Join-Path -Path $outputdir -ChildPath $_
$fileUrl = '{0}/{1}' -f $url.TrimEnd('/'), $_
Invoke-WebRequest -Uri $fileUrl -OutFile $filePath
}
答案2
有很多方法可以解决这个问题,正如这里的其他答案所提供的,如果严格使用内置的 Windows 10 功能执行此操作,您可以使用 Powershell 来执行此操作。
或者,我使用功能强大、免费且(合理)直观的程序来做你所说的事情,https://www.httrack.com/
它专为本地抓取和复制网站而设计,但您可以配置过滤器或自定义 URL 列表,以便它仅抓取某些 URL 路径或某些文件类型。就我而言,我让它跟踪网站并下载每天更新 4 次的所有天气图 .jpg 文件。
配置并成功运行后,您可以使用 httrack 的命令行功能继续在 .bat 文件中更新/镜像站点/url/文件,然后将其作为 Windows 10 中的计划任务运行。您设置为通过 Windows 任务计划程序激活的 .bat 文件看起来像这样。
set path="C:\Program Files (x86)\WinHTTrack";%path%
cd D:\Backups\WebsiteProjectFolder\
httrack --update