it-swarm-pt.tech

Como baixar arquivos da linha de comando no Windows como wget ou curl

Como posso baixar algo da Web diretamente sem o Internet Explorer ou o Firefox abrindo o Acrobat Reader/Quicktime/MS Word/o que for?

Estou usando o Windows, portanto, uma versão do Windows de Wget faria.

324
Paolo Tedesco

Wget for Windows deve funcionar.

Do Wget Wiki FAQ :

O GNU Wget é um utilitário de rede gratuito para recuperar arquivos da World Wide Web usando HTTP e FTP, os dois protocolos de Internet mais utilizados. Funciona de forma não interativa, permitindo assim o trabalho em segundo plano, após ter logado.

De esta seção de FAQ , links de download são sugeridos:

Binários do Windows

Link com cortesia de Jernej Simončič é usado em seu lugar.

171
Tony

Uma alternativa que descobri recentemente, usando o PowerShell:

$client = new-object System.Net.WebClient
$client.DownloadFile("http://www.xyz.net/file.txt","C:\tmp\file.txt")

Funciona também com consultas GET.

Se você precisar especificar credenciais para baixar o arquivo, adicione a seguinte linha entre:

$client.Credentials =  Get-Credential                

Um Prompt de credenciais padrão do Windows será exibido. As credenciais que você inserir lá serão usadas para baixar o arquivo. Você só precisa fazer isso uma vez por todo o tempo em que usar o objeto $ client.

296
Paolo Tedesco

Se você tiver o PowerShell> = 3.0, poderá usar Invoke-WebRequest

Invoke-WebRequest -OutFile index.html http://superuser.com

Ou golfado

iwr -outf index.html http://superuser.com

Baixar um arquivo via HTTP no Windows

76
Steven Penny

O Windows possui seu próprio utilitário de download de linha de comando - BITSAdmin :

O BITSAdmin é uma ferramenta de linha de comando que você pode usar para criar trabalhos de download ou upload e monitorar seu progresso.

EDIT: 26.01.15 - Aqui está minha visão geral de como um arquivo pode ser baixado no Windows sem ferramentas externas

E um exemplo completo de bitsadmin:

bitsadmin /transfer myDownloadJob /download /priority normal http://downloadsrv/10mb.Zip c:\10mb.Zip

Editar : 15.05.2018 - acabou sendo possível baixar um arquivo com certutil também :

certutil.exe -urlcache -split -f "https://download.sysinternals.com/files/PSTools.Zip" pstools.Zip

O Certutil não está instalado por padrão no XP/Win2003, mas está disponível nas versões mais novas do Windows. Para XP/2003 você precisará do Admin Tool Pack para o windows server 2003

52
npocmaka

Salve o texto a seguir como wget.js e simplesmente chame

cscript /nologo wget.js http://example.com

Este é o código:

var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET", WScript.Arguments(0), /*async=*/false);
WinHttpReq.Send();
WScript.Echo(WinHttpReq.ResponseText);

/* To save a binary file use this code instead of previous line
BinStream = new ActiveXObject("ADODB.Stream");
BinStream.Type = 1;
BinStream.Open();
BinStream.Write(WinHttpReq.ResponseBody);
BinStream.SaveToFile("out.bin");
*/
30
user190042

Existe um cURL nativo para Windows disponível aqui . Existem muitos sabores disponíveis - com e sem suporte SSL.

Você não precisa da bagagem extra de Cygwin e dos gostos, apenas um pequeno arquivo EXE.


Também é importante saber que existem aliases wget e curl incorporados em todas as versões modernas do Windows Powershell. Eles são equivalentes.

Nenhum arquivo extra ou downloads são necessários para obter a funcionalidade wget:

Usando Curl In Powershell (O Totó Sociável)

Excerto:

Você pode digitar um comando cURL como aquele que baixa um arquivo de um repositório GitHub.

curl http://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json

e parece que funciona, mas o que está realmente fazendo é usar cURL como um alias. No exemplo acima, o que acontecerá é que você apenas obterá os cabeçalhos em vez do próprio arquivo.

Os aliases no PowerShell permitem criar atalhos para comandos mais longos, para que você não precise digitá-los o tempo todo.

Se você digitar o comando Get-Alias, ele fornecerá uma lista de todos os aliases usados ​​no PowerShell. Como você pode ver, o comando curl apenas chama o comando Invoke-WebRequest. Eles são semelhantes, mas não o mesmo, e é por isso que a solicitação acima não funciona para nós.

enter image description here

Para que isso funcione corretamente no PowerShell, a maneira mais fácil é usar variáveis ​​e o argumento -OutFile, conforme mostrado aqui:

enter image description here

(nome do arquivo cortado na imagem “ https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ”)

Esta sintaxe irá baixar o conteúdo completo do arquivo de destino azuredeploy.json para o arquivo local newfile.json


A principal vantagem é que ele é incorporado ao próprio Powershell, portanto, esse código será executado diretamente sem nenhum download ou qualquer outra criação de arquivo extra será necessária para que ele funcione em qualquer versão moderna do Windows.

20
Gaurav Kumar

Fiz um arquivo myGet.bat rápido que chama o método PowerShell descrito acima.

@Echo OFF
SetLocal EnableDelayedExpansion
Set Var=%1
Set Var=!Var:http://=!
Set Var=!Var:/=,!
Set Var=!Var:%%20=?!
Set Var=!Var: =?!
Call :LOOP !var!
Echo.Downloading: %1 to %~p0!FN!
powershell.exe -Command (new-object System.Net.WebClient).DownloadFile('%1','%~p0!FN!')
GoTo :EOF
:LOOP
If "%1"=="" GoTo :EOF
Set FN=%1
Set FN=!FN:?= !
Shift
GoTo :LOOP

Eu peguei emprestado algum código deParsing URL para filename com espaço.

19
MartinC

Eu estava procurando o mesmo, e desde que eu não tive privilégio para instalar qualquer um dos pacotes acima, eu fui para uma pequena solução alternativa (para baixar 30 + arquivos):

  • Eu criei um arquivo de lote
  • Listou todos os arquivos
  • Coloque firefox.exe no começo de cada linha
  • Fui ao diretório firefox em Program Files
  • Correu.
8
Jesse P Francis

Cygwin tem Wget (e muito mais utilitários).

3
Rich Homolka

Se PowerShell for uma opção, essa é a rota preferida, já que você (potencialmente) não precisará instalar nada extra:

(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt', 'C:\tmp\file.tx??t')

Caso contrário, Wget for Windows, como outros apontaram, é definitivamente a segunda melhor opção. Como postado em outra resposta, parece que você pode fazer o download de Wget por si só , ou você pode pegá-lo como parte de Cygwin ou MSys .

Se, por algum motivo, você ficar preso em um intervalo de tempo, usando uma máquina que não tenha PowerShell e você terá acesso zero a um navegador da Web em funcionamento (ou seja, o Internet Explorer é o único navegador o sistema e suas configurações estão corrompidas), e seu arquivo está em um site FTP (em oposição ao HTTP):

start->run "FTP", press "OK".

Se a memória funciona desde o Windows 98, posso confirmar que ainda existe no Windows 8 RTM (talvez seja necessário entrar em appwiz.cpl e adicionar/remover recursos para obtê-lo). Este utilitário pode baixar e carregar arquivos de/para sites FTP na web. Ele também pode ser usado em scripts para automatizar qualquer operação.

Esta ferramenta que está sendo construída tem sido uma verdadeira economia de vida para mim no passado, especialmente nos dias de ftp.cdrom.com - Eu baixei o Firefox dessa forma uma vez, em uma máquina completamente quebrada que tinha apenas uma conexão discada à Internet. conexão (quando o tamanho máximo do pacote do sneakernet ainda era 1,44 MB, e o Firefox ainda era chamado de "Netscape"/me faz trollface ).

Algumas dicas: é o seu próprio processador de comandos e tem sua própria sintaxe. Tente digitar "ajuda". Todos os sites FTP exigem um nome de usuário e senha; mas se eles permitem usuários "anônimos", o nome de usuário é "anônimo" e a senha é o seu endereço de e-mail (você pode criar um se não quiser ser rastreado, mas geralmente há algum tipo de lógica para garantir um endereço de email válido).

3
BrainSlugs83

E http://www.httrack.com/ tem uma interface agradável (e é gratuito), para sites de espelhamento. Também tem uma versão do Linux.

2
Zsolt Botykai

Você também pode usar o wget empacotado no PowerShell . ; ^) Para abrir, pressione a tecla Windows e digite "powershell" ou Windows-R, digite "powershell" e pressione Enter.

Nenhuma instalação é necessária.

Uma diferença interessante do convencional wget (mais em esse link ): Você não pode simplesmente usar o maior que o pipe para um arquivo. wget no PowerShell é apenas um wrapper de conveniência para Invoke-WebRequest e você precisa usar sua sintaxe para gravar em um arquivo.

wget https://superuser.com/questions/25538 -OutFile rubySlippers.html
2
ruffin

Você pode obter o WGet para Windows aqui . Alternativamente, você pode clicar com o botão direito do mouse no link de download do item que deseja baixar e escolher Salvar como. Isso fará o download do arquivo e não o abrirá no aplicativo designado.

1
BinaryMisfit

Eu acho que instalar o wget via Chocolatey é a maneira mais fácil.

  1. Instalar Chocolatey
  2. Na linha de comando, digite: choco install wget
  3. Você pode então usar wget da linha de comando como nos sistemas * nix.
0
sivabudh

Se você quiser uma GUI, tente VisualWget , que é realmente limpo e recurso completo. É baseado em GNU Wget para o seu mecanismo de download.

EDIT: link atualizado.

0
Wurlitzer

Conforme documentado nesta resposta SU , você pode usar o seguinte em Powershell:

Import-Module bitstransfer
start-bitstransfer -source http://something/something.ext -destination c:\something.ext
0
Dolan Antenucci