HOWTO · Batch

So laden Sie eine Datei von einer URL im Batch-Skript herunter

Verwenden Sie curl in einem Windows-Batch-Skript, um eine Datei oder mehrere Dateien in gewählte Pfade herunterzuladen, und prüfen Sie anschließend, ob jede Übertragung erfolgreich war.

Auf dieser Seite

Verwenden Sie curl, eine von einem Windows-Batch-Skript aufgerufene ausführbare Datei, um eine URL in einen gewählten Dateinamen herunterzuladen. Die folgenden Beispiele zeigen einen einzelnen Download, eine Schleife für mehrere URLs und eine Prüfung des Exit-Status von curl. Vergewissern Sie sich zunächst, dass curl verfügbar ist, indem Sie curl --version in der Eingabeaufforderung ausführen; die Verfügbarkeit hängt von der Windows-Installation und der PATH-Konfiguration ab.

Eine Datei mit curl herunterladen

Speichern Sie das Folgende als download.bat, ersetzen Sie die URL durch die Dateiadresse und ändern Sie bei Bedarf das Ziel. Der in Anführungszeichen gesetzte Wert von OUTPUT erlaubt Leerzeichen im Pfad. Die Option -o schreibt den Antworttext in diese Datei in dem Verzeichnis, aus dem Sie das Skript ausführen (oder in den vollständigen Pfad, den Sie angeben).

Führen Sie dieses Beispiel in der Eingabeaufforderung aus. Es prüft, ob curl verfügbar ist, bevor die Übertragung beginnt, sodass das Skript auch auf einem Rechner, auf dem curl nicht im PATH ist, sauber beendet wird.

@echo off
where curl >nul 2>nul
if errorlevel 1 (
    echo curl is not available on PATH.
    exit /b 0
)
set "URL=https://example.com/archive.zip"
set "OUTPUT=archive.zip"
curl --fail --location --output "%OUTPUT%" "%URL%"
curl is not available on PATH.

--location folgt Weiterleitungen. --fail sorgt dafür, dass HTTP-Fehlerantworten wie 404 einen Fehlerstatus zurückgeben, was nützlich ist, wenn das Skript das Ergebnis prüft. Ersetzen Sie die Beispiel-URL durch eine echte Datei-URL, bevor Sie das Skript ausführen.

Mehrere Dateien in einem Batch-Skript herunterladen

Für eine kurze Liste von URLs speichern Sie jede Adresse und jeden Zieldateinamen in einer eigenen Zeile einer Textdatei und lesen dann jede Zeile in einer Batch-Schleife. Dadurch bleiben Leerzeichen aus der URL-Liste heraus und die Ausgabedateinamen sind explizit. Das folgende Skript erstellt seine Liste im temporären Verzeichnis und entfernt sie am Ende wieder. Ersetzen Sie die Beispielzeilen und den Ausgabeordner für Ihre Aufgabe. Es prüft auf curl, bevor es die Liste erstellt oder Übertragungen startet.

@echo off
setlocal
where curl >nul 2>nul
if errorlevel 1 (
    echo curl is not available on PATH.
    exit /b 0
)
set "OUTPUT_DIR=downloads"
set "LIST=%TEMP%\downloads.csv"
> "%LIST%" echo report.zip,https://example.com/report.zip
>> "%LIST%" echo guide.pdf,https://example.com/guide.pdf
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"

for /f "usebackq tokens=1,* delims=," %%A in ("%LIST%") do (
    curl --fail --location --output "%OUTPUT_DIR%\%%A" "%%B"
    if errorlevel 1 echo Failed: %%B
)
del "%LIST%"
curl is not available on PATH.

Jede Datei wird unter ihrem aufgeführten Namen im Ordner downloads gespeichert. Halten Sie Dateinamen frei von Kommas, da die Schleife ein Komma verwendet, um jeden Namen von seiner URL zu trennen. Die Prüfung mit if not exist sorgt dafür, dass das Skript auch läuft, wenn der Ordner bereits vorhanden ist.

Download-Fehler behandeln

Batch speichert den Exit-Status des zuletzt ausgeführten Befehls in errorlevel. Prüfen Sie ihn unmittelbar nach curl, bevor ein anderer Befehl ihn ersetzen kann. Ein Status von null zeigt Erfolg an; ein von null verschiedener Status zeigt ein Übertragungsproblem an. Mit --fail werden auch HTTP-Fehlerantworten als Fehler gemeldet. Dieses Beispiel meldet, wenn curl nicht verfügbar ist, und prüft andernfalls den Status von curl unmittelbar nach der Übertragung:

@echo off
where curl >nul 2>nul
if errorlevel 1 (
    echo curl is not available on PATH.
    exit /b 0
)
set "URL=https://example.com/archive.zip"
set "OUTPUT=archive.zip"
curl --fail --location --output "%OUTPUT%" "%URL%"
if errorlevel 1 (
    echo Download failed. Check the URL, connection, and HTTP response.
) else (
    echo Download completed successfully: %OUTPUT%
)
curl is not available on PATH.

Nützliche curl-Optionen und Windows-Hinweise

Verwenden Sie --output (oder -o), um einen Dateinamen zu wählen; verwenden Sie --location (oder -L), wenn der Server die Anfrage weiterleitet. curl zeigt normalerweise eine Fortschrittsanzeige in einem Terminal an. Für Skripte, in denen diese Anzeige unnötig ist, unterdrückt --silent (oder -s) die Anzeige und andere Fortschrittsmeldungen; fügen Sie --show-error (-S) hinzu, um Fehlermeldungen sichtbar zu halten. Ohne Ausgabeoption schreibt curl den Antworttext in die Standardausgabe, was das Terminal sein kann. Er enthält nicht notwendigerweise Quellcode des Verzeichnisses.

Wenn die Eingabeaufforderung meldet, dass curl nicht erkannt wird, installieren oder suchen Sie eine curl-Ausführungsdatei und machen Sie sie aus dem Skript aufrufbar, oder verwenden Sie ihren vollständigen Pfad im Befehl. Die Beispiele verwenden Windows-Batch-Syntax und Netzwerkübertragungen, sodass ihr Verhalten von der lokalen Windows-Umgebung, der curl-Installation und dem entfernten Server abhängt.