Ich habe ein Powershell-Skript, das Dateien wie diese herunterlädt:
powershell -Command `$progressPreference = 'silentlyContinue'; Invoke-WebRequest https://ftp.ncep.noaa.gov/data/nccf/com/cfs/prod/cfs/cfs.$m2/$m21z/6hrly_grib_04/pgbf$m2h.04.$m2h.grb2 -OutFile C:\OpenGrADS-2.2\data\cfs\cfs001.grb2`
Ist es möglich, vor dem Herunterladen zu prüfen, ob die Datei vorhanden ist? Wenn ja, laden Sie sie herunter. Wenn nicht, warten Sie eine bestimmte Zeit, bevor Sie es erneut versuchen.
Antwort1
Das folgende PowerShell-Skript erledigt diese Aufgabe.
Es ist aus dem Beitrag kopiert Remote-Datei mit Wiederholungsunterstützung herunterladen:
# $ErrorActionPreference = "Stop"
function DownloadWithRetry([string] $url, [string] $downloadLocation, [int] $retries)
{
while($true)
{
try
{
Invoke-WebRequest $url -OutFile $downloadLocation
break
}
catch
{
$exceptionMessage = $_.Exception.Message
Write-Host "Failed to download '$url': $exceptionMessage"
if ($retries -gt 0) {
$retries--
Write-Host "Waiting 10 seconds before retrying. Retries left: $retries"
Start-Sleep -Seconds 10
}
else
{
$exception = $_.Exception
throw $exception
}
}
}
}
#
# Usage
DownloadWithRetry -url "http://example.com/file.zip" -downloadLocation "C:\Downloads\file.zip" -retries 6