Frage Laden Sie eine Reihe von Dateien automatisch über die Befehlszeile / wget herunter


Ich habe einen Fall, dass ich einen automatischen Download für eine Liste von 114 Dateien (Rezitation) für jeden Leser auslösen möchte,
Zum Beispiel, wenn ich die Rezitationen für einen Reader herunterladen möchte abkrDie URLs für die Dateien sehen wie folgt aus.

http://server6.mp3quran.net/abkr/001.mp3
http://server6.mp3quran.net/abkr/002.mp3
...
http://server6.mp3quran.net/abkr/113.mp3
http://server6.mp3quran.net/abkr/114.mp3

Das sind einfach Koranrezitationen, also haben sie immer insgesamt 114

Gibt es eine einfache Möglichkeit, diese zu verwenden command line auf Windows ?


4
2017-09-03 13:14


Ursprung


Welches Betriebssystem? - Indrek
Windows ist bevorzugt, Mac ist auch ok. - Anas Nakawa


Antworten:


Der Vollständigkeit halber ist hier eine Batch-Only-Lösung:

@ECHO OFF
SetLocal EnableDelayedExpansion
FOR /L %%G IN (1, 1, 114) DO (
    SET num=%%G
    IF 1!num! LSS 100 SET num=0!num!
    IF 1!num! LSS 200 SET num=0!num!
    wget http://server6.mp3quran.net/abkr/!num!.mp3
)
EndLocal

Bearbeiten 1: Unnötige Klammern entfernt

Bearbeiten 2: Startwert des Zählers auf 1 korrigiert.


4
2017-09-04 09:15



Alle Lösungen sind großartig, aber ich werde das akzeptieren, da es einfach ist (Eingabeaufforderung) und nichts anderes als wget erfordert. - Anas Nakawa
eine kleine Korrektur, die Schleife beginnt bei 1 statt 0. - Anas Nakawa
Ups, korrigieren ... - zb226


Versuchen Sie für eine Windows-Lösung das folgende PowerShell-Skript:

$Client = New-Object System.Net.WebClient
for ($i = 1; $i -le 144; $i++)
{
    $file = [string]::Format("{0:D3}.mp3", $i)
    $Client.DownloadFile("http://server6.mp3quran.net/abkr/" + $file, $file)
}

Zuerst cd in das Verzeichnis, in das Sie die Dateien natürlich herunterladen möchten.


4
2017-09-03 14:55





Sie haben kein Betriebssystem angegeben, aber wenn Sie * nix und Bash verwenden, funktioniert Folgendes:

wget http://server6.mp3quran.net/abkr/{001..114}.mp3

Eine Lösung, die mit jeder Shell funktionieren sollte:

#!/bin/sh
for i in $(seq -w 1 114); do
    printf 'http://server6.mp3quran.net/abkr/%s.mp3 ' $i
done | xargs wget

oder wenn seq existiert nicht auf dem System:

#!/bin/sh
i=1
MAX=114
while [ $i -le $MAX ]; do
    printf 'http://server6.mp3quran.net/abkr/%03d.mp3 ' $i
    i=$((i+1))
done | xargs wget

Einfach kopieren + in die Shell einfügen oder in einer Skriptdatei speichern und ausführen.


4
2017-09-03 13:24



ist Mac OSX in Ihrem enthalten *nix Lösung? - Anas Nakawa
anasnakawa: Ja, Sie können Bash unter MacOSX ausführen, aber ich glaube, es ist nicht die Standard-Shell. Versuche einfach den Befehl auszuführen "bash"In einem Terminal. Möglicherweise müssen Sie es vorher installieren, oder suchen Sie nach einer einfachen Lösung mit der Standard-Shell. Um zu verdeutlichen: die oben genannten wird definitiv funktionieren, aber es ist möglicherweise nicht der offensichtlichste Weg, wenn Bash noch nicht installiert ist. - Daniel Andersson


Als Referenz und der Vollständigkeit halber eine Version ohne Seq, eine nette Ausgabe und weiter, wenn der Download aus irgendeinem Grund aufhört:

#!/bin/sh
for i in 00{1..9} 0{10..99} {100..144}
    printf 'http://server6.mp3quran.net/abkr/%s.mp3 ' $i
done | xargs wget -q --show-progress -c

0
2018-05-21 06:20