Câu hỏi tải xuống hàng loạt tệp tự động bằng dòng lệnh / wget


Tôi có một trường hợp mà tôi muốn kích hoạt một tải xuống tự động cho một danh sách 114 tệp (tụng) cho mỗi người đọc,
ví dụ: nếu tôi muốn tải xuống các truy vấn cho người đọc được gọi là abkr, các url cho các tệp sẽ trông giống như sau ..

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

chỉ đơn giản là đây là những lần đọc Kinh Qur'an, vì vậy chúng luôn có tổng cộng 114

có cách nào dễ dàng để lặp lại việc sử dụng command line trên các cửa sổ ?


4
2017-09-03 13:14


gốc


Hệ điều hành nào? - Indrek
Windows được ưa thích, Mac cũng Ok. - Anas Nakawa


Các câu trả lời:


Vì mục đích hoàn chỉnh, đây là giải pháp chỉ theo lô:

@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

Chỉnh sửa 1: Loại bỏ các dấu ngoặc không cần thiết.

Chỉnh sửa 2: Giá trị bắt đầu bộ đếm được sửa thành 1.


4
2017-09-04 09:15



tất cả các giải pháp là tuyệt vời, nhưng tôi sẽ chấp nhận điều này vì nó là thẳng về phía trước (command-prompt), và không yêu cầu cái gì khác hơn là wget .. - Anas Nakawa
một sự điều chỉnh nhỏ, vòng lặp bắt đầu từ 1 thay vì 0. - Anas Nakawa
Rất tiếc, đang sửa ... - zb226


Đối với giải pháp Windows, hãy thử tập lệnh PowerShell sau:

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

Đầu tiên cd vào thư mục bạn muốn tải xuống các tệp, tất nhiên.


4
2017-09-03 14:55





Bạn đã không nói hệ điều hành, nhưng nếu bạn đang sử dụng * nix và Bash các tác phẩm sau:

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

Một giải pháp sẽ hoạt động với bất kỳ trình bao nào:

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

hoặc nếu seq không tồn tại trên hệ thống:

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

Chỉ cần sao chép + dán nó vào vỏ hoặc lưu nó trong một tập tin kịch bản và chạy nó.


4
2017-09-03 13:24



Mac OSX được bao gồm trong *nix dung dịch ? - Anas Nakawa
Anasnakawa: Có, bạn có thể chạy Bash trên MacOSX, nhưng nó không phải là shell mặc định, tôi tin. Thử chạy lệnh "bashBạn có thể cần phải cài đặt nó trước, hoặc tìm một giải pháp đơn giản bằng cách sử dụng shell mặc định Để làm rõ: ở trên chắc chắn sẽ hoạt động, nhưng nó có thể không phải là cách rõ ràng nhất nếu Bash chưa được cài đặt. - Daniel Andersson


Để tham khảo và vì lợi ích của việc hoàn thành một phiên bản không có seq, một đầu ra tốt đẹp và tiếp tục nếu quá trình tải xuống dừng lại vì bất kỳ lý do gì:

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