Вопрос автоматически загружать серию файлов с помощью командной строки / wget


У меня есть случай, когда я хотел бы запустить автоматическую загрузку для списка из 114 файлов (чтение) для каждого читателя,
например, если я хочу загрузить декламации для читателя, называемого abkr, URL-адреса файлов будут выглядеть следующим образом.

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

просто это изречения Корана, поэтому они всегда имеют в общей сложности 114

есть простой способ петли, используя command line на Windows ?


4
2017-09-03 13:14


происхождения


Какая операционная система? - Indrek
Windows предпочтительнее, Mac также хорошо. - Anas Nakawa


ответы:


Для полноты, вот пакетное решение:

@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

Изменить 1: Удалены ненужные фигурные скобки.

Изменить 2: Исправлено начальное значение счетчика до 1.


4
2017-09-04 09:15



все решения отличные, но я соглашусь с этим, потому что он прямолинейный (командная строка), и не требует чего-то другого, кроме wget .. - Anas Nakawa
небольшая коррекция, цикл начинается с 1 вместо 0. - Anas Nakawa
К сожалению, исправление ... - zb226


Для решения Windows попробуйте выполнить следующий сценарий 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)
}

Первый cd в каталог, который вы хотите загрузить файлы, конечно.


4
2017-09-03 14:55





Вы не указали ОС, но если вы используете * nix и Bash следующие работы:

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

Решение, которое должно работать с любой оболочкой:

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

или если seq не существует в системе:

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

Просто скопируйте + вставьте его в оболочку или сохраните в файле сценария и запустите.


4
2017-09-03 13:24



Mac OSX включен в ваш *nix решение ? - Anas Nakawa
anasnakawa: Да, вы можете запустить Bash на MacOSX, но я считаю, что это не оболочка по умолчанию. Попробуйте просто запустить команду "bash«в терминале. Возможно, вам придется установить его заранее или искать простое решение с использованием оболочки по умолчанию. Чтобы уточнить: приведенное выше, безусловно, будет работать, но это может быть не самый очевидный способ, если Bash еще не установлен. - Daniel Andersson


Для справки и для полноты версии без seq, хороший вывод и продолжить, если загрузка по какой-либо причине прекращается:

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