Descargar un archivo a través de HTTP desde un script en Windows


19

Quiero una forma de descargar un archivo a través de HTTP dada su URL (similar a cómo funciona wget). He visto las respuestas a esta pregunta , pero tengo dos cambios en los requisitos:

  • Me gustaría que se ejecute en Windows 7 o posterior (aunque si funciona en Windows XP, es una ventaja).
  • Necesito poder hacer esto en una máquina estándar sin nada más que el script, que debe ser texto que se pueda ingresar fácilmente en un teclado o copiar / pegar.
  • Cuanto más corto, mejor.

Entonces, esencialmente, me gustaría una secuencia de comandos .cmd (batch), VBScript o PowerShell que pueda realizar la descarga. Podría usar COM o invocar Internet Explorer, pero debe ejecutarse sin ninguna entrada y debe comportarse bien cuando se invoca sin una pantalla (como a través de una sesión Telnet ).


DLOAD v1.0 una herramienta de línea de comandos win32 como wget superuser.com/a/833445/384998
— seizu


No es un duplicado porque esta pregunta busca específicamente algo que se ejecute en una máquina estándar (sin software adicional, como wget para Windows).
— Jason R. Coombs

@ JasonR.Coombs La respuesta aceptada es la misma que una de las respuestas de esa pregunta, por lo que el futuro lector no obtendrá nada más.
— Franklin Yu

Estoy de acuerdo; en este punto, la pregunta más general reemplaza a esta.
— Jason R. Coombs

Respuestas:


16

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

Invoke-WebRequest -OutFile su.htm -Uri superuser.com

O golf:

iwr -outf su.htm superuser.com

2
One-liner del indicador de cmd regular:powershell -command "iwr -outf su.htm superuser.com"
— valiano

14

Yo usaría BITS ( primer ):

Background Intelligent Transfer Service (BITS) is a component of modern
Microsoft Windows operating systems that facilitates prioritized,
throttled, and asynchronous transfer of files between machines using
idle network bandwidth.

A partir de Windows 7, Microsoft recomienda usar los cmdlets de PowerShell para BITS.

% import-module bitstransfer
% Start-BitsTransfer http://path/to/file C:\Path\for\local\file

También puede usar BITS a través de COM , consulte aquí un ejemplo de VBScript . Y hay ' bitsadmin ', una herramienta de línea de comandos para controlar las descargas:

BITSAdmin is a command-line tool that you can use to create download or
upload jobs and monitor their progress.

En Windows 7 se bitsadmin.exeafirma que es una herramienta obsoleta. Sin embargo:

% bitsadmin.exe /transfer "NAME" http://path/to/file C:\Path\for\local\file

2
Parece ahora que bitsadmin está en desuso y es posible que no se incluya en futuras versiones de Windows.
— Jason R. Coombs

@ JasonR.Coombs: enlace? ¿referencia?
— akira

2
technet.microsoft.com/en-us/magazine/ff382721.aspx ... entonces, en lugar de "bitadmin.exe" uno solo usa bits-cmdlets.
— akira

1
gracias por eso. Todo lo que tenía que seguir era que bitsadmin me decía que estaba en desuso cuando lo ejecuté.
— Jason R. Coombs

Tenga en cuenta que fuera de ruta debe ser completo y no relativa (sombrero de punta superuser.com/questions/365755/... )
— Wilkie mate

7

Pruebe la clase de cliente web . Hay una secuencia de comandos de PowerShell de muestra en la parte inferior de esta página:

$c = new-object system.net.WebClient
$r = new-object system.io.StreamReader $c.OpenRead("http://superuser.com")
echo $r.ReadToEnd()

2
Esto es de ayuda. Descubrí que el WebClient también tiene un método DownloadFile, que descargará el contenido directamente a un archivo. Gracias.
— Jason R. Coombs

3

Copie y pegue las siguientes seis líneas (o solo las últimas cuatro líneas) en un archivo de texto. Luego cámbiele el nombre a vget.vbs.

'cscript vget.vbs >FILE.TXT
'Run this vbscript at command line. Use above syntax to download/create FILE.TXT
Set oX = CreateObject("Microsoft.XmlHTTP")
oX.Open "GET", "http://www.exampleURL.com/FILE.TXT", False
oX.Send ""
WScript.Echo oX.responseText

Obviamente, necesita personalizar tres cosas en este script para que funcione para usted.

  1. La parte que dice " http://www.exampleURL.com/FILE.TXT ". Deberá sustituir la URL correcta por el archivo que desea descargar.
  2. El comando que ejecutará en la línea de comando para ejecutar este script; necesitará especificar el nombre correcto para el script vget.vbs, si así es como lo llamó.
  3. Y el nombre al FILE.TXTque desea que la salida sea dirigida por una línea de comando por lotes de DOS .

Solo he intentado usar esto para descargar un archivo de texto ASCII sin procesar (un script cmd más potente) desde mi cuenta de Dropbox , por lo que no sé si funcionará para archivos EXE, etc .; o de otros servidores web.

Si prescinde de las dos primeras líneas de comentarios, solo tiene cuatro líneas. Si conoce bien VBScript , incluso podría llevar este código en su cabeza y escribirlo en la línea de comando según sea necesario. Sólo contiene cinco componentes de comandos de teclado: CreateObject, .Open, .Send, WScript.Echoy .responseText.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.