it-swarm.dev

Cómo descargar archivos desde la línea de comandos en Windows como wget o curl

¿Cómo puedo descargar algo de la web directamente sin que Internet Explorer o Firefox abran Acrobat Reader/Quicktime/MS Word/lo que sea?

Estoy usando Windows, por lo que una versión de Windows de Wget haría.

324
Paolo Tedesco

Wget para Windows debería funcionar.

Desde el Wget Wiki FAQ :

GNU Wget es una utilidad de red gratuita para recuperar archivos de la World Wide Web mediante HTTP y FTP, los dos protocolos de Internet más utilizados. Funciona de forma no interactiva, lo que permite el trabajo en segundo plano, después de haber cerrado la sesión.

Desde esta sección de FAQ , se sugieren enlaces de descarga:

Binarios de Windows

Enlace con cortesía de Jernej Simončič se utiliza en su lugar.

171
Tony

Una alternativa que descubrí recientemente, usando PowerShell:

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

Funciona también con consultas GET.

Si necesita especificar las credenciales para descargar el archivo, agregue la siguiente línea entre:

$client.Credentials =  Get-Credential                

Aparecerá un mensaje estándar de credenciales de Windows. Las credenciales que ingrese allí se utilizarán para descargar el archivo. Solo necesita hacer esto una vez por todo el tiempo que usará el objeto $ client.

296
Paolo Tedesco

Si tiene PowerShell> = 3.0, puede usar Invoke-WebRequest

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

O jugando al golf

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

Descargar un archivo a través de HTTP en Windows

76
Steven Penny

Windows tiene su propia utilidad de descarga de línea de comandos - BITSAdmin :

BITSAdmin es una herramienta de línea de comandos que puede utilizar para crear trabajos de descarga o carga y controlar su progreso.

EDITAR: 26.01.15 - Aquí está mi descripción general de cómo se puede descargar un archivo en Windows sin herramientas externas

Y un completo ejemplo de bitadmin:

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

Editar : 15.05.2018 - resultó que es posible descargar un archivo con certutil también :

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

Certutil no se instala de forma predeterminada en XP/Win2003, pero está disponible en las versiones más nuevas de Windows. Para XP/2003 necesitará el Admin Tool Pack para Windows Server 2003

52
npocmaka

Guarde el siguiente texto como wget.js y simplemente llame

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

Este es el 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

Hay una cURL nativa para Windows disponible aquí . Hay muchos sabores disponibles, con y sin soporte SSL.

No necesita el equipaje adicional de Cygwin y los "me gusta", solo un pequeño archivo EXE.


También es importante saber que hay alias wget y curl integrados en todas las versiones modernas de Windows Powershell. Son equivalentes.

No se requieren archivos o descargas adicionales para obtener la funcionalidad wget:

Usando Curl In Powershell (El Geek Sociable)

Extracto:

Puede escribir un comando cURL como el que descarga un archivo desde un repositorio de GitHub.

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

y parecerá que funciona, pero lo que realmente está haciendo es usar cURL como un alias. En la instancia anterior, lo que sucederá es que solo obtendrá los encabezados en lugar del archivo en sí.

Los alias en PowerShell le permiten crear accesos directos para comandos más largos para que no tenga que escribirlos todo el tiempo.

Si escribe el comando Get-Alias, le dará una lista de todos los alias que se utilizan en PowerShell. Como puede ver, el comando curl solo llama al comando Invoke-WebRequest. Son similares pero no iguales, por lo que la solicitud anterior no funciona para nosotros.

enter image description here

Para que esto funcione correctamente en PowerShell, la forma más fácil es usar variables y el argumento -OutFile como se muestra aquí:

enter image description here

(el nombre del archivo está cortado en la imagen " https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ")

Esta sintaxis descargará el contenido completo del archivo de destino azuredeploy.json al archivo local newfile.json


La principal ventaja es que está integrado en el mismo Powershell, por lo que este código se ejecutará directamente sin descargas o se requieren otras creaciones de archivos adicionales para que funcione en cualquier versión moderna de Windows.

20
Gaurav Kumar

Hice un rápido archivo myGet.bat que llama al método PowerShell descrito anteriormente.

@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

Tomé prestado algo de código deURL de análisis para el nombre de archivo con espacio.

19
MartinC

Estaba buscando lo mismo, y como no tenía ningún privilegio para instalar ninguno de los paquetes anteriores, busqué una pequeña solución (para descargar más de 30 archivos):

  • Creé un archivo por lotes
  • Listado todos los archivos
  • Ponga firefox.exe al principio de cada línea
  • Fui al directorio de Firefox en Program Files
  • Corrió.
8
Jesse P Francis

Cygwin tiene Wget (y muchas más utilidades).

3
Rich Homolka

Si PowerShell es una opción, esa es la ruta preferida, ya que (potencialmente) no tendrá que instalar nada adicional:

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

En su defecto, Wget para Windows, como han señalado otros, es definitivamente la segunda mejor opción. Como se publicó en otra respuesta, parece que puede descargar Wget todo por sí mismo , o puede tomarlo como parte de Cygwin o MSys .

Si, por alguna razón, se encuentra atrapado en un cambio de tiempo, al usar una máquina que no tiene PowerShell y no tiene acceso a un navegador web que funcione (es decir, Internet Explorer es el único navegador en El sistema y su configuración están dañados), y su archivo se encuentra en un sitio FTP (a diferencia de HTTP):

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

Si la memoria sirve, ha estado allí desde Windows 98, y puedo confirmar que todavía está allí en Windows 8 RTM (es posible que tenga que ingresar a appwiz.cpl y agregar/eliminar funciones para obtenerla). Esta utilidad puede descargar y subir archivos a/desde sitios FTP en la web. También se puede utilizar en scripts para automatizar cualquiera de las operaciones.

Esta herramienta incorporada me ha salvado la vida en el pasado, especialmente en los días de ftp.cdrom.com: descargué Firefox de esa manera una vez, en una máquina completamente rota que solo tenía acceso telefónico a Internet. conexión (cuando el tamaño máximo de paquete de sneakernet aún era de 1.44 MB, y Firefox todavía se llamaba "Netscape"/me trollface ).

Un par de consejos: es su propio procesador de comandos y tiene su propia sintaxis. Intenta escribir "ayuda". Todos los sitios FTP requieren un nombre de usuario y contraseña; pero si permiten usuarios "anónimos", el nombre de usuario es "anónimo" y la contraseña es su dirección de correo electrónico (puede inventar uno si no desea que se le haga un seguimiento, pero generalmente hay algún tipo de lógica para asegurarse de que sea una dirección de correo electrónico válida).

3
BrainSlugs83

Y http://www.httrack.com/ tiene una GUI agradable (y es gratuita), para reflejar sitios. También tiene una versión para Linux.

2
Zsolt Botykai

También podría usar el wget empaquetado en PowerShell . ; ^) Para abrir, presione la tecla de Windows y escriba "powershell" o Windows-R y escriba "powershell" y presione regresar.

No requiere instalación.

Una diferencia interesante de la wget convencional (más en ese enlace ): no se puede usar simplemente el mayor que para canalizar a un archivo. wget en PowerShell es solo un envoltorio de conveniencia para Invoke-WebRequest, y necesita usar su sintaxis para escribir en un archivo.

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

Busque la función /download en https://lolbas-project.github.io .

En este momento hay Bitsadmin.exe, Certutil.exe, Esentutl.exe, Expand.exe, Extrac32.exe, Findstr.exe, Hh.exe, Ieexec.exe, Makecab.exe, Replace.exe para Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 y las versiones equivalentes del servidor.

1
noraj

Puede obtener WGet para Windows aquí . También puede hacer clic con el botón derecho en el enlace de descarga del elemento que desea descargar y elegir Guardar como. Esto descargará el archivo y no lo abrirá en la aplicación asignada.

1
BinaryMisfit

Creo que instalar wget a través de Chocolatey es la forma más fácil.

  1. Instalar Chocolatey
  2. Desde la línea de comandos, escriba: choco install wget
  3. Luego puede usar wget desde la línea de comandos como en los sistemas * nix.
0
sivabudh

Si desea una GUI, intente VisualWget , que en realidad está limpio, y la función está completa. Se basa en GNU Wget para su motor de descarga.

EDITAR: enlace actualizado.

0
Wurlitzer

Como se documenta en esta respuesta SU , puede usar lo siguiente en Powershell:

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