Question télécharger une série de fichiers automatiquement à l'aide de la ligne de commande / wget


J'ai un cas que je voudrais déclencher un téléchargement automatique pour une liste de 114 fichiers (récitation) pour chaque lecteur,
par exemple si je veux télécharger les récitations pour un lecteur appelé abkr, les URL pour les fichiers ressembleront à la suivante ..

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

tout simplement ce sont des récitations du Coran, donc ils ont toujours un total de 114

y a-t-il un moyen facile de boucler cela en utilisant command line sur les fenêtres ?


4
2017-09-03 13:14


origine


Quel système d'exploitation? - Indrek
Windows est préféré, Mac est ok aussi .. - Anas Nakawa


Réponses:


Par souci d'exhaustivité, voici une solution par lots:

@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

Edit 1: Supprimé les accolades inutiles.

Edit 2: Valeur de départ du compteur corrigée à 1.


4
2017-09-04 09:15



toutes les solutions sont géniales, mais je vais accepter cela car il est simple (invite de commande), et ne nécessite pas autre chose que wget .. - Anas Nakawa
une petite correction, la boucle commence à 1 au lieu de 0. - Anas Nakawa
Oups, corrigeant ... - zb226


Pour une solution Windows, essayez le script PowerShell suivant:

$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)
}

Premier cd dans le répertoire dans lequel vous souhaitez télécharger les fichiers, bien sûr.


4
2017-09-03 14:55





Vous n'avez pas indiqué le système d'exploitation, mais si vous utilisez * nix et Bash les travaux suivants:

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

Une solution qui devrait fonctionner avec n'importe quel shell:

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

ou si seq n'existe pas sur le système:

#!/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

Copiez-le simplement dans le shell ou enregistrez-le dans un fichier script et exécutez-le.


4
2017-09-03 13:24



Mac OSX est-il inclus dans votre *nix Solution ? - Anas Nakawa
anasnakawa: Oui, vous pouvez lancer Bash sur MacOSX, mais ce n'est pas le shell par défaut, je crois. Essayez juste de lancer la commande "bash"dans un terminal. Vous devrez peut-être l'installer au préalable ou chercher une solution simple en utilisant le shell par défaut. Pour clarifier: ce qui précède fonctionnera sans aucun doute, mais ce ne sera peut-être pas le cas si Bash n'est pas déjà installé. - Daniel Andersson


Pour référence et pour être complet, une version sans seq, un bon résultat et continuez si le téléchargement s'arrête pour une raison quelconque:

#!/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