Board logo

标题: [技术讨论] 请来挑战——wget 如何实现批量下载的同时,可以自动重命名 [打印本页]

作者: hacker85    时间: 2014-4-7 18:07     标题: 请来挑战——wget 如何实现批量下载的同时,可以自动重命名

本帖最后由 hacker85 于 2014-4-7 18:15 编辑

http://mr3.douban.com/2014040321 ... 3/mp3/x12714775.mp3  Shadow of You
http://mr4.douban.com/2014040321 ... 3/mp3/x14826133.mp3  Uke Blues (live)
http://mr4.douban.com/2014040321 ... 3/mp3/x11670461.mp3  完美心灵
http://mr3.douban.com/2014040321 ... 3/mp3/x10192406.mp3  REA ZEBRA
http://mr3.douban.com/2014040321 ... 3/mp3/x10192607.mp3  sleepy cafe
http://mr3.douban.com/2014040321 ... 3/mp3/x10319750.mp3  Crazy Train
http://mr3.douban.com/2014040321 ... 3/mp3/x11705280.mp3  Fuzzy Bro Blues
http://mr4.douban.com/2014040321 ... 3/mp3/x12995251.mp3  一个人的歌
http://mr3.douban.com/2014040321 ... 3/mp3/x14501719.mp3  Morning
http://mr4.douban.com/2014040321 ... 3/mp3/x14568771.mp3  挽歌

上面的内容是一个file文件里的内容,每一个URL的后面有两个空格,然后就是这个mp3文件的名字了。
现在能wget -i file  则可以实现批量下载这些文件 ,但是下载下来的文件的名字太不容易辨别了, 于是想通过某种办法实现批量下载的同时,能
自动按每个文件后面的名字来重命名。请教大家。3Q

特别的:
如果您写出了方法,可以再追加一个功能,即对于倒数第一首和第三首歌曲,我之前已经手工下载完了,也改了名字了。如今,对于您的“办法”中,
是否可以加入“自动识别”功能——如果在默认下载目录里,已经存在了同名的文件,那么则不下载file文件中对应的URL。

PS:
1、当然,对于“特别的”这是一个额外的功能。
2、上面的URL是在浏览器的缓存中找出的,对于浏览器没有关闭的情况下,地址是可以正常下载的,但截止至发帖时,这些地址居多都不好用了,所以
只能作为事例讲解于此。
作者: DAIC    时间: 2014-4-7 19:39

  1. @echo off
  2. for /f "tokens=1-2" %%i in (a.txt) do (
  3.     wget "%%i" -O "%%j.mp3"
  4. )
复制代码

作者: hacker85    时间: 2014-4-7 22:09

回复 2# DAIC


    呵,我说得是在Linux下,不是在windows下。
作者: CrLf    时间: 2014-4-7 22:48

本帖最后由 CrLf 于 2014-4-7 23:15 编辑

回复 3# hacker85


    若回显无误再把那个 echo 去掉:
  1. IFS=\n'
  2. for i in $(gawk '$2 {print "wget \""$1"\" -o \""$2"\""}' 'INPUTFILE');do echo $i;done
复制代码
若第二列不含分隔符,可以只用 while:
  1. while read l1 l2; do echo "wget \"$l1\" -o \"$l2\""; done<'INPUTFILE'
复制代码

作者: DAIC    时间: 2014-4-8 10:15

回复 4# CrLf


有空格也没关系吧
  1. #!/bin/bash
  2. while read c1 c2; do
  3.     wget "$c1" -O "$c2.mp3"
  4. done < a.txt
复制代码

作者: CrLf    时间: 2014-4-8 16:20

回复 5# DAIC


    对噢,这个相当于 tokens=1*,还以为指定多个变量时跟 for 一样是逐列的,惯性思维...学习了
作者: xiedeng    时间: 2014-4-11 15:40

回复 5# DAIC


    正解!学习了!
作者: tbjx138    时间: 2014-11-21 22:38

回复  CrLf


有空格也没关系吧
DAIC 发表于 2014-4-8 10:15

这个怎么用啊?
作者: DAIC    时间: 2014-11-24 10:03

回复 8# tbjx138


    这个是 shell 脚本,在 Linux 系统里面执行。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2