Estou tentando fazer download de um arquivo de um site (ex. Http://www.example.com/package.zip ) usando um arquivo em lote do Windows. Estou recebendo um código de erro quando escrevo a função abaixo:
xcopy /E /Y "http://www.example.com/package.zip"
O arquivo em lote não parece gostar do "/" após o http. Existe alguma maneira de escapar desses caracteres para que não presuma que sejam parâmetros de função?
windows
batch-file
download
scripting
James
fonte
fonte
Respostas:
Com o PowerShell 2.0 (Windows 7 pré-instalado), você pode usar:
A partir do PowerShell 3.0 (Windows 8 pré-instalado), você pode usar
Invoke-WebRequest
:Em um arquivo em lote, eles são chamados de:
(PowerShell 2.0 está disponível para instalação no XP, 3.0 para Windows 7)
fonte
.bat
e.ps1
arquivos pode realmente estragar o seu material.Existe um componente padrão do Windows que pode realizar o que você está tentando fazer: BITS . Ele foi incluído no Windows desde XP e 2000 SP3.
Corre:
O nome do trabalho é simplesmente o nome de exibição do trabalho de download - defina-o como algo que descreve o que você está fazendo.
fonte
bitsadmin
não está disponível no Windows XP Home Edition.Isso pode ser um pouco fora do assunto, mas você pode facilmente baixar um arquivo usando o Powershell . O Powershell vem com versões modernas do Windows para que você não precise instalar nenhum equipamento extra no computador. Aprendi a fazer isso lendo esta página:
http://teusje.wordpress.com/2011/02/19/download-file-with-powershell/
O código era:
fonte
System
emSystem.Net.WebClient
A última vez que verifiquei, não há um comando de linha de comando para se conectar a um URL da linha de comando do MS. Experimente o wget para Windows:
http://gnuwin32.sourceforge.net/packages/wget.htm
ou URL2File:
http://www.chami.com/free/url2file_wincon.html
No Linux, você pode usar "wget".
Como alternativa, você pode tentar o VBScript. Eles são como programas de linha de comando, mas são scripts interpretados pelo host de scripts wscript.exe. Aqui está um exemplo de download de um arquivo usando VBS:
/server/29707/download-file-from-vbscript
fonte
Baixando arquivos em PURE BATCH ...
Sem qualquer JScript, VBScript, Powershell, etc ... Apenas puro Batch!
Algumas pessoas estão dizendo que não é possível baixar arquivos com um script em lote sem usar JScript ou VBScript, etc ... Mas eles estão definitivamente errados!
Aqui está um método simples que parece funcionar muito bem para baixar arquivos em seus scripts em lote. Deve estar funcionando em quase qualquer URL de arquivo. É até possível usar um servidor proxy, se necessário.
Para baixar arquivos, podemos usar o BITSADMIN.EXE do sistema Windows. Não há necessidade de baixar / instalar nada ou usar qualquer JScript ou VBScript, etc. O Bitsadmin.exe está presente na maioria das versões do Windows, provavelmente do XP ao Windows 10.
Aproveitar!
USO:
Você pode usar o comando BITSADMIN diretamente, desta forma:
bitsadmin /transfer mydownloadjob /download /priority FOREGROUND "http://example.com/File.zip" "C:\Downloads\File.zip"
Servidor proxy:
Para conectar-se usando um proxy, use este comando antes de baixar.
bitsadmin /setproxysettings mydownloadjob OVERRIDE "proxy-server.com:8080" "<local>"
Clique neste LINK se quiser mais informações sobre BITSadmin.exe
SOLUÇÃO DE PROBLEMAS:
Se você receber este erro: "Não foi possível conectar ao BITS - 0x80070422",
certifique-se de que o serviço do Windows "Serviço de transferência inteligente de plano de fundo (BITS)" esteja ativado e tente novamente. (Deve estar habilitado por padrão.)
FUNÇÕES PERSONALIZADAS
Call :DOWNLOAD_FILE "URL"
Call :DOWNLOAD_PROXY_ON "SERVER:PORT"
Call :DOWNLOAD_PROXY_OFF
Fiz essas 3 funções para simplificar os comandos bitsadmin. É mais fácil de usar e lembrar. Pode ser particularmente útil se você o estiver usando várias vezes em seus scripts.
ATENÇÃO ...
Antes de usar essas funções, primeiro você precisa copiá-las de CUSTOM_FUNCTIONS.CMD para o final do seu script. Há também um exemplo completo: DOWNLOAD-EXAMPLE.CMD
: DOWNLOAD_FILE "URL"
A função principal, irá baixar os arquivos de URL.
: DOWNLOAD_PROXY_ON "SERVER: PORT"
(Opcional) Você pode usar esta função se precisar usar um servidor proxy.
Chamar a função: DOWNLOAD_PROXY_OFF desabilitará o servidor proxy.
EXEMPLO:
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
DOWNLOAD-EXAMPLE.CMD
fonte
então
ou apenas clique duas vezes para testar no windows
fonte
AFAIK, o Windows não tem uma ferramenta de linha de comando embutida para baixar um arquivo. Mas você pode fazer isso a partir de um VBScript e pode gerar o arquivo VBScript em lote usando eco e redirecionamento de saída:
Mais explicação aqui
fonte
Baixe o Wget aqui http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-setup.exe
Em seguida, instale-o.
Em seguida, crie um arquivo .bat e coloque-o nele
Ajuste o URL e o caminho do arquivo no script
fonte
Você não pode usar xcopy em http. Tente baixar wget para windows. Isso pode resolver o problema. É um utilitário de linha de comando para download não interativo de arquivos via http. Você pode obtê-lo em http://gnuwin32.sourceforge.net/packages/wget.htm
fonte
Se bitsadmin não é sua preferência, você pode usar este comando do PowerShell:
fonte
Use Bat To Exe Converter
Crie um arquivo em lote e coloque algo como o código abaixo nele
ou
e convertê-lo em exe.
fonte
Em vez do wget, você também pode usar aria2 para baixar o arquivo de um URL específico.
Veja o seguinte link que explicará mais sobre aria2:
https://aria2.github.io/
fonte
BATCH pode não ser capaz de fazer isso, mas você pode usar JScript ou VBScript se não quiser usar ferramentas que não são instaladas por padrão com o Windows.
O primeiro exemplo nesta página baixa um arquivo binário em VBScript: http://www.robvanderwoude.com/vbstech_internet_download.php
Esta resposta do SO baixa um arquivo usando JScript (IMO, a melhor linguagem): Windows Script Host (jscript): como faço para baixar um arquivo binário?
Seu script de lote pode então chamar um JScript ou VBScript que baixa o arquivo.
fonte
Isso deve funcionar. Eu fiz o seguinte para um projeto de servidor de jogo. Ele irá baixar o zip e extraí-lo para qualquer diretório que você especificar.
Salvar como name.bat ou name.cmd
Original: https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver/blob/master/steam.cmd
fonte
Encontrei este script VB:
http://www.olafrv.com/?p=385
Funciona como um encanto. Configurado como uma função com uma chamada de função muito simples:
Originalmente de: http://www.ericphelps.com/scripting/samples/BinaryDownload/index.htm
Aqui está o código completo para redundância:
fonte
Esta pergunta tem uma resposta muito boa aqui . Meu código é puramente baseado nessa resposta com algumas modificações.
Salve o snippet abaixo como wget.bat e coloque-o no caminho do sistema (por exemplo, coloque-o em um diretório e adicione este diretório ao caminho do sistema).
Você pode usá-lo em seu cli da seguinte maneira:
wget url/to/file [?custom_name]
onde
url_to_file
é obrigatório ecustom_name
opcionalO url do arquivo e os nomes dos arquivos salvos são exibidos em texto colorido ansi. Se isso está causando problemas para você, verifique este projeto github.
PS Este código requer que você tenha o PowerShell instalado.
fonte
Você pode configurar uma tarefa agendada usando wget, use o campo “Executar” na tarefa agendada como:
fonte
Há um utilitário (reside no CMD) no Windows que pode ser executado a partir do CMD (se você tiver acesso de gravação):
Aplicativo integrado do Windows. Não há necessidade de downloads externos.
Testado no Win 10
fonte
use ftp:
Altere tudo em asteriscos para se adequar à sua situação.
fonte