baixar uma série de arquivos automaticamente usando a linha de comando / wget

4

Eu tenho um caso que eu gostaria de acionar um download automático para uma lista de 114 arquivos (recitação) para cada leitor,
por exemplo, se eu quiser baixar as recitações para um leitor chamado abkr , as urls dos arquivos serão parecidas com as seguintes ..

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

simplesmente estas são recitações do Alcorão, então elas sempre têm um total de 114

existe uma maneira fácil de fazer o loop usando command line no Windows ?

    
por Anas Nakawa 03.09.2012 / 15:14

4 respostas

4

Por questão de integridade, aqui está uma solução somente em lotes:

@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

Editar 1: Removemos chaves desnecessárias.

Editar 2: Corrigir o valor inicial do contador para 1.

    
por 04.09.2012 / 11:15
4

Para uma solução do Windows, experimente o seguinte script do PowerShell:

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

Primeiro cd no diretório para o qual você deseja baixar os arquivos, é claro.

    
por 03.09.2012 / 16:55
4

Você não declarou o SO, mas se você estiver usando o * nix e o Bash, o seguinte funciona:

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

Uma solução que deve funcionar com qualquer shell:

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

ou, se seq não existir no sistema:

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

Basta copiar + colá-lo no shell ou salvá-lo em um arquivo de script e executá-lo.

    
por 03.09.2012 / 15:24
0

Para referência e para completar, uma versão sem seq, uma boa saída e continue se o download parar por qualquer motivo:

#!/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
    
por 21.05.2018 / 08:20