Utilitário para baixar e renomear vários arquivos?

Utilitário para baixar e renomear vários arquivos?

Este script Bashnão há problema em baixar apenas alguns arquivos, mas preciso baixar mais de cem deles.VisualWGeté capaz de baixar um arquivo de arquivos, mas não consegue renomeá-los.

Alguém conhece um utilitário do Windows que usaria uma lista de texto de duas colunas, onde a coluna 1 conteria o URL completo do arquivo e a coluna 2 conteria o nome a ser usado para renomear?

Responder1

Você também pode usar o Download Accelerator Plus (DAP) para fazer download e renomear.

Você só precisa criar uma lista DAP, importá-la para o aplicativo, selecionar a pasta onde deseja salvar os arquivos e deixar que ele faça o trabalho.

Para criar uma lista DAP, basta abrir um editor de texto e digitar o seguinte para cada arquivo que deseja baixar:

<filelist_index><fileinfo>
    <filename>FILENAME.EXT</filename>
    <url>FULL_URL_TO_FILE</url>
</fileinfo></filelist_index>

Substitua FILENAME.EXT pelo nome do arquivo desejado (não esqueça do arquivo EXTENSION). Basta usar o MS Excel para consolidar o código, copiá-lo e colá-lo em um arquivo de texto e salvá-lo como um arquivo XXX.DAP. Aqui está um exemplo de planilha:http://ge.tt/6sO1B2g

Responder2

Ou, usando o Windows Powershell ...

$folder = "D:\Output\"
$userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
$web = New-Object System.Net.WebClient
$web.Headers.Add("user-agent", $userAgent)
$input = "D:\todownload.txt"
$delimit = " "

Get-Content $input |
    Foreach-Object { 
        $line = $_.split($delimit);
        $destination_file = ([io.path]::getfilename($line[1]))
        "[" + $destination_file  + "]" + "Downloading " + $line[0]
        try {
            $target = join-path $folder $destination_file
            $web.DownloadFile($line[0], $target)
        } catch {
            $_.Exception.Message + ": " + $destination_file
            add-content (join-path $folder ("downloader" + ".log")) ("[" + $destination_file + "] " + $_.Exception.Message)
            add-content (join-path $folder ("downloader" + ".retry")) ($line -join " ")
        }
    }

O arquivo de entrada (todownload.txt) está no formato:

http://path.to.download.com/file.jpg 0001_NewFileName_file.jpg

Responder3

Você pode experimentar a extensão do FirefoxDownThemAll!. Ele pode baixar vários links de uma página, você pode filtrar a lista de downloads e também aplicar um padrão de renomeação.

Responder4

perl -MLWP::Simple -n -e '($u,$n)=split;getstore($u,$n)' filenames.txt

(Testado OK)

onde filenames.txt contém algo como

http://foo.com/a/b?parm=x this.dat
http://bar.org//d/e/f.html isso.html

O mesmo script em formato mais longo

#!/usr/bin/perl
use estrito;
usar avisos;
use LWP::Simples;

abra meu $fh, '<', "filenames.txt" ou morra "não consigo ler filenames.txt porque $!\n";
enquanto () {
  meu ($url, $novonome) = dividir;
  getstore($url, $novonome);
}

(Não testado)

informação relacionada