tải xuống một loạt các tệp tự động bằng cách sử dụng dòng lệnh / wget


4

Tôi có một trường hợp mà tôi muốn kích hoạt tải xuống tự động cho danh sách 114 tệp (đọc) cho mỗi người đọc,
ví dụ nếu tôi muốn tải về các bài đọc cho một người đọc được gọi là abkr, các url cho các tệp sẽ trô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

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

Có một cách dễ dàng để lặp lại mà sử dụng command line trên các cửa sổ ?


Hệ điều hành nào?
Indrek

Windows được ưa thích, Mac cũng Ok ..
Anas Nakawa

Câu trả lời:


4

Để hoàn thiện, đây là một giải pháp chỉ dành cho 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ỏ niềng răng không cần thiết.

Chỉnh sửa 2: Sửa giá trị bắt đầu truy cập thành 1.


tất cả các giải pháp đều tuyệt vời, nhưng tôi sẽ chấp nhận điều này vì nó rất đơn giản (nhắc lệnh) và không yêu cầu thứ gì khác ngoài wget ..
Anas Nakawa

một hiệu chỉnh nhỏ, vòng lặp bắt đầu từ 1 thay vì 0.
Anas Nakawa

Rất tiếc, sửa ...
zb226

4

Đố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 tất nhiên, vào thư mục bạn muốn tải các tập tin về.


4

Bạn chưa nêu OS, nhưng nếu bạn đang sử dụng * nix và Bash thì các công việc sau:

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

Một giải pháp nên làm việc với bất kỳ shell 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 trình bao hoặc lưu nó trong tệp script và chạy nó.


Mac OSX có trong *nix dung dịch ?
Anas Nakawa

anasnakawa: Vâng, bạn có thể chạy Bash trên MacOSX, nhưng tôi không tin nó là shell mặc định. Hãy thử chạy lệnh " bash "trong một thiết bị đầu cuối. Bạn có thể cần phải cài đặt nó trước hoặc tìm kiếm một giải pháp đơn giản bằng cách sử dụng shell mặc định. Để làm rõ: những điều 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

0

Để tham khảo và hoàn thành một phiên bản không có seq, một đầu ra đẹ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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.