Estoy intentando descargar un archivo de un sitio web (por ejemplo, http://www.example.com/package.zip ) usando un archivo por lotes de Windows. Recibo un código de error cuando escribo la función a continuación:
xcopy /E /Y "http://www.example.com/package.zip"
Al archivo por lotes no parece gustarle la "/" después de http. ¿Hay alguna forma de escapar de esos caracteres para no asumir que son parámetros de función?
windows
batch-file
download
scripting
James
fuente
fuente
Respuestas:
Con PowerShell 2.0 (Windows 7 preinstalado) puede usar:
A partir de PowerShell 3.0 (Windows 8 preinstalado), puede usar
Invoke-WebRequest
:Desde un archivo por lotes se denominan:
(PowerShell 2.0 está disponible para su instalación en XP, 3.0 para Windows 7)
fuente
.bat
y desconocidos.ps1
puede arruinar sus cosas.Hay un componente estándar de Windows que puede lograr lo que está tratando de hacer: BITS . Se ha incluido en Windows desde XP y 2000 SP3.
Correr:
El nombre del trabajo es simplemente el nombre para mostrar del trabajo de descarga; configúrelo en algo que describa lo que está haciendo.
fuente
bitsadmin
no está disponible en Windows XP Home Edition.Esto puede estar un poco fuera de tema, pero puede descargar un archivo con bastante facilidad usando Powershell . Powershell viene con versiones modernas de Windows para que no tenga que instalar nada adicional en la computadora. Aprendí cómo hacerlo leyendo esta página:
http://teusje.wordpress.com/2011/02/19/download-file-with-powershell/
El código era:
fuente
System
enSystem.Net.WebClient
La última vez que verifiqué, no hay un comando de línea de comando para conectarse a una URL desde la línea de comando de MS. Pruebe wget para Windows:
http://gnuwin32.sourceforge.net/packages/wget.htm
o URL2File:
http://www.chami.com/free/url2file_wincon.html
En Linux, puede utilizar "wget".
Alternativamente, puede probar VBScript. Son como programas de línea de comandos, pero son scripts interpretados por el host de scripts wscript.exe. Aquí hay un ejemplo de descarga de un archivo usando VBS:
/server/29707/download-file-from-vbscript
fuente
Descargando archivos en PURE BATCH ...
Sin JScript, VBScript, Powershell, etc ... ¡Solo puro Batch!
Algunas personas dicen que no es posible descargar archivos con un script por lotes sin usar JScript o VBScript, etc. ¡Pero definitivamente están equivocados!
Aquí hay un método simple que parece funcionar bastante bien para descargar archivos en sus scripts por lotes. Debería funcionar en casi cualquier URL de archivo. Incluso es posible utilizar un servidor proxy si lo necesita.
Para descargar archivos, podemos usar BITSADMIN.EXE desde el sistema de Windows. No es necesario descargar / instalar nada ni usar JScript o VBScript, etc. Bitsadmin.exe está presente en la mayoría de las versiones de Windows, probablemente desde XP hasta Windows 10.
¡Disfrutar!
USO:
Puede usar el comando BITSADMIN directamente, así:
bitsadmin /transfer mydownloadjob /download /priority FOREGROUND "http://example.com/File.zip" "C:\Downloads\File.zip"
Servidor proxy:
para conectarse mediante un proxy, utilice este comando antes de descargar.
bitsadmin /setproxysettings mydownloadjob OVERRIDE "proxy-server.com:8080" "<local>"
Haga clic en este ENLACE si desea más información sobre BITSadmin.exe
SOLUCIÓN DE PROBLEMAS:
Si recibe este error: "No se puede conectar a BITS - 0x80070422"
Asegúrese de que el servicio de Windows "Servicio de transferencia inteligente en segundo plano (BITS)" esté habilitado y vuelva a intentarlo. (Debería estar habilitado de forma predeterminada).
FUNCIONES PERSONALIZADAS
Call :DOWNLOAD_FILE "URL"
Call :DOWNLOAD_PROXY_ON "SERVER:PORT"
Call :DOWNLOAD_PROXY_OFF
Hice estas 3 funciones para simplificar los comandos bitsadmin. Es más fácil de usar y recordar. Puede ser particularmente útil si lo usa varias veces en sus scripts.
TENGA EN CUENTA ...
Antes de usar estas funciones, primero deberá copiarlas de CUSTOM_FUNCTIONS.CMD al final de su script. También hay un ejemplo completo: DOWNLOAD-EXAMPLE.CMD
: DOWNLOAD_FILE "URL"
La función principal, descargará archivos desde la URL.
: DOWNLOAD_PROXY_ON "SERVER: PORT"
(Opcional) Puede utilizar esta función si necesita utilizar un servidor proxy.
Llamar a la función: DOWNLOAD_PROXY_OFF desactivará el servidor proxy.
EJEMPLO:
CALL :DOWNLOAD_PROXY_ON "proxy-server.com:8080"
CALL :DOWNLOAD_FILE "http://example.com/File.zip" "C:\Downloads\File.zip"
CALL :DOWNLOAD_PROXY_OFF
CUSTOM_FUNCTIONS.CMD
DESCARGAR-EJEMPLO.CMD
fuente
luego
o simplemente haz doble clic en él para probarlo en Windows
fuente
AFAIK, Windows no tiene una herramienta de línea de comandos incorporada para descargar un archivo. Pero puede hacerlo desde un VBScript, y puede generar el archivo VBScript a partir de lotes utilizando el eco y la redirección de salida:
Más explicación aquí
fuente
Descarga Wget desde aquí http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-setup.exe
Luego instálelo.
Luego haz un archivo .bat y pon esto en él
Ajuste la URL y la ruta del archivo en el script
fuente
No puede usar xcopy sobre http. Intente descargar wget para Windows. Eso puede hacer el truco. Es una utilidad de línea de comandos para la descarga no interactiva de archivos a través de http. Puede obtenerlo en http://gnuwin32.sourceforge.net/packages/wget.htm
fuente
Si bitsadmin no es lo tuyo, puedes usar este comando de PowerShell:
fuente
Use Bat To Exe Converter
Cree un archivo por lotes y coloque algo como el siguiente código en él
o
y convertirlo a exe.
fuente
En lugar de wget, también puede usar aria2 para descargar el archivo desde una URL en particular.
Vea el siguiente enlace que explicará más sobre aria2:
https://aria2.github.io/
fuente
Es posible que BATCH no pueda hacer esto, pero puede usar JScript o VBScript si no desea usar herramientas que no están instaladas por defecto con Windows.
El primer ejemplo de esta página descarga un archivo binario en VBScript: http://www.robvanderwoude.com/vbstech_internet_download.php
Esta respuesta SO descarga un archivo usando JScript (IMO, el mejor lenguaje): Windows Script Host (jscript): ¿cómo descargo un archivo binario?
Su secuencia de comandos por lotes puede simplemente llamar a un JScript o VBScript que descarga el archivo.
fuente
Esto debería funcionar. Hice lo siguiente para un proyecto de servidor de juegos. Descargará el zip y lo extraerá a cualquier directorio que especifique.
Guardar como nombre.bat o nombre.cmd
Original: https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver/blob/master/steam.cmd
fuente
Encontré este script de VB:
http://www.olafrv.com/?p=385
Funciona de maravilla. Configurado como una función con una llamada de función muy simple:
Originalmente de: http://www.ericphelps.com/scripting/samples/BinaryDownload/index.htm
Aquí está el código completo de redundancia:
fuente
Esta pregunta tiene muy buena respuesta aquí . Mi código se basa puramente en esa respuesta con algunas modificaciones.
Guarde el siguiente fragmento como wget.bat y colóquelo en la ruta del sistema (por ejemplo, póngalo en un directorio y agregue este directorio a la ruta del sistema).
Puede usarlo en su cli de la siguiente manera:
wget url/to/file [?custom_name]
donde
url_to_file
es obligatorio ycustom_name
es opcionalLa URL del archivo y los nombres de archivo guardados se muestran en texto ansi en color. Si eso le está causando problemas, consulte este proyecto de github.
PD: Este código requiere que tengas PowerShell instalado.
fuente
Puede configurar una tarea programada usando wget, use el campo "Ejecutar" en la tarea programada como:
fuente
Hay una utilidad (reside con CMD) en Windows que se puede ejecutar desde CMD (si tiene acceso de escritura):
Aplicación de Windows incorporada. Sin necesidad de descargas externas.
Probado en Win 10
fuente
usar ftp:
Cambie todo en asteriscos para adaptarlo a su situación.
fuente