PDA

Показать полную графическую версию : [решено] реализация скачивания в пакетном режиме


alexmoreman
18-11-2010, 11:19
Доброго времени суток!
Задался задачей скачать файлы в пакетном режиме с помощью wget
kfpbk по сети и нашол лишь один пример но он под линукс
#!/bin/bash
for i in `seq 1 746` ; do
wget http://civil-reprint.consultant.ru/images\
/3/00.png/0000.png/000006`printf "%.3d" $i`.png
done
там же далее и про винду
цитирую:

Можно использовать bash из набора утилит unix, собранных под Win32. Этим утилитам для работы не требуются CygWin или MinGW. Однако в этот набор не входит программа seq, зато в эту версию bash встроена программа проверки условий, поэтому командный файл придется переписать следующим образом:

#!/bin/bash
let n=1
while [ "$n" -le 746 ] ; do
wget http://civil-reprint.consultant.ru/images\
/3/00.png/0000.png/000006`printf "%.3d" $n`.png
let n=n+1
done

скачал этот набор но один фиг не получается.
для примера ссылки вида
от civil-reprint.consultant.ru/images/3/00.png/0000.png/000006001.png
до civil-reprint.consultant.ru/images/3/00.png/0000.png/000006746.png

amel27
18-11-2010, 11:56
в этот набор не входит программа seq »
есть в комплекте GNU (http://sourceforge.net/projects/unxutils/) для Windows, но можно и штатными средствами BAT/CMD:
@for /l %%i in (6001,1,6746) do @(
set "$i=000000000%%i"
call wget "http://civil-reprint.consultant.ru/images/3/00.png/0000.png/%%$i:~-9%%.png"
)

P.S. всё же для закачки файлов CURL (http://curl.haxx.se/download.html) лучше подходит, чем WGET (http://gnuwin32.sourceforge.net/packages/wget.htm)

alexmoreman
18-11-2010, 12:12
спасибо очень помогло!
буду дальше разбираться, надобно чтобы возможно было задавать диапазон номера директорий.
и чтобы при повторе названия файла была переименовка
если не трудно есть ли какие еще мысли?

amel27
18-11-2010, 12:20
надобно чтобы возможно было задавать диапазон номера директорий.
и чтобы при повторе названия файла была переименовка »слишком туманно для конкретных мыслей... ;)

alexmoreman
18-11-2010, 12:25
вот ссылка с диапазоном номера файла
%%i in (6001,1,6746) - диапазон
http://civil-reprint.consultant.ru/images/3/00.png/0000.png/%%$i:~-9%%.png
вот еще для папки думаю
типа
%%i in (001,1,150)
да и еще вопрос, переименовка повторяющихся в названии файлах возможна?

amel27
18-11-2010, 12:46
переименовка повторяющихся в названии файлах возможна? »
в общем случае - почему бы и нет, в каждом конкретном - зависит от постановки задачи... по одному URL вроде как не должно быть два файла с одним именем... если мы заказываем конкретный линк, то нам априори известно имя файла и проверить/переименовать дело техники (опять же, смотря по какому правилу переименовывать)

%%i in (001,1,150) »
так нельзя - только так: "%%i in (1,1,150)", нолики потом можно дорисовать (как в примере)

alexmoreman
18-11-2010, 14:50
подскажите пожалуйста как еще присобачить "random"
тоесть скачивается файл с именами 0017 по 0080.jpg
перехожу к следующей папке а там тоже такие имена имеются
ивот как присобачить на примере вот этом: за что большьшое спасибо Amel27
@for /l %%i in (6001,1,6746) do @(
set "$i=000000000%%i"
call wget "http://civil-reprint.consultant.ru/images/3/00.png/0000.png/%%$i:~-9%%.png"
)
чтобы ссылка вида такого стала

call wget "http://civil-reprint.consultant.ru/images/3/00.png/0000.png/%%$i:~-9%%.png -O %random%.png"
и на выходе произвольное имя файла вроде 567477.png
или как то иначе.
У меня не получается.

amel27
19-11-2010, 03:49
чтобы ссылка вида такого стала »нужно немного подправить :
call wget "http://civil-reprint.consultant.ru/images/3/00.png/0000.png/%%$i:~-9%%.png -O %%random%%.png"




© OSzone.net 2001-2012