it-swarm.it

Come scaricare file da linea di comando in Windows come wget o curl

Come posso scaricare qualcosa dal web direttamente senza Internet Explorer o Firefox aprendo Acrobat Reader/Quicktime/MS Word/che altro?

Sto usando Windows, quindi una versione Windows di Wget dovrebbe fare.

324
Paolo Tedesco

Wget per Windows dovrebbe funzionare.

Dalla Wget Wiki FAQ :

GNU Wget è un'utilità di rete gratuita per recuperare file dal World Wide Web tramite HTTP e FTP, i due protocolli Internet più utilizzati. Funziona in modo non interattivo, consentendo così il lavoro in background, dopo essersi disconnessi.

Da questa sezione di FAQ , i collegamenti per il download sono suggeriti:

Binari di Windows

Viene utilizzato invece il collegamento con la cortesia di Jernej Simončič.

171
Tony

Un'alternativa che ho scoperto di recente, usando PowerShell:

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

Funziona anche con le query GET.

Se è necessario specificare le credenziali per scaricare il file, aggiungere la seguente riga in mezzo:

$client.Credentials =  Get-Credential                

Apparirà un prompt di credenziali standard di Windows. Le credenziali che inserisci verranno utilizzate per scaricare il file. Hai solo bisogno di farlo una volta per tutto il tempo in cui utilizzerai l'oggetto $ client.

296
Paolo Tedesco

Se hai PowerShell> = 3.0, puoi usare Invoke-WebRequest

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

O giocare a golf

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

Scarica un file via HTTP in Windows

76
Steven Penny

Windows ha la sua utility per il download della riga di comando - BITSAdmin :

BITSAdmin è uno strumento da riga di comando che è possibile utilizzare per creare lavori di download o upload e monitorare i loro progressi.

EDIT: 26.01.15 - Ecco la mia panoramica di come un file può essere scaricato su Windows senza strumenti esterni

E un esempio bitsadmin completo:

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

Modifica : 15.05.2018 - è risultato possibile scaricare anche un file con certutil :

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

Certutil non è installato di default su XP/Win2003 ma è disponibile sulle nuove versioni di Windows. Per XP/2003 è necessario Admin Tool Pack per Windows Server 2003

52
npocmaka

Salva il seguente testo come wget.js e chiama semplicemente

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

Questo è il codice:

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

C'è un cURL nativo per Windows disponibile qui . Ci sono molti gusti disponibili, con e senza supporto SSL.

Non è necessario il bagaglio extra di Cygwin e simili, solo un piccolo file EXE.


È anche importante sapere che esistono entrambi alias wget e curl incorporati in tutte le versioni moderne di Windows PowerShell. Sono equivalenti.

Non sono necessari file o download aggiuntivi per ottenere la funzionalità wget:

Utilizzo di Curl In Powershell (The Geek socievole)

Estratto:

Puoi digitare un comando cURL come quello che scarica un file da un repository GitHub.

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

e sembrerà che funzioni, ma quello che sta effettivamente facendo è usare solo cURL come alias. Nell'esempio sopra, ciò che accadrà è che otterrete solo le intestazioni invece del file stesso.

Gli alias in PowerShell consentono di creare scorciatoie per comandi più lunghi in modo da non doverli digitare tutto il tempo.

Se si digita il comando Get-Alias, verrà fornito un elenco di tutti gli alias utilizzati in PowerShell. Come puoi vedere, il comando ricciolo chiama semplicemente il comando Invoke-WebRequest. Sono simili ma non uguali, motivo per cui la richiesta di cui sopra non funziona per noi.

 enter image description here

Per far funzionare correttamente questo in PowerShell il modo più semplice è usare le variabili e l'argomento -OutFile come mostrato qui:

 enter image description here

(nome file tagliato nell'immagine " https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ")

Questa sintassi scaricherà il contenuto completo del file di destinazione azuredeploy.json nel file locale newfile.json


Il vantaggio principale è che è incorporato in Powershell stesso, quindi questo codice verrà eseguito direttamente senza download o qualsiasi altra creazione di file aggiuntiva necessaria per farlo funzionare su qualsiasi versione moderna di Windows.

20
Gaurav Kumar

Ho creato un file myGet.bat che richiama il metodo PowerShell descritto in precedenza.

@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

Ho preso in prestito del codice daParsing URL per nomefile con spazio.

19
MartinC

Stavo cercando lo stesso, e dal momento che non avevo il privilegio di installare nessuno dei pacchetti di cui sopra, sono andato per una piccola soluzione (per scaricare 30 + file):

  • Ho creato un file batch
  • Elenco di tutti i file
  • Inserisci firefox.exe all'inizio di ogni riga
  • Sono andato nella directory firefox in Program Files
  • L'ho fatto.
8
Jesse P Francis

Cygwin ha Wget (e molte altre utilità).

3
Rich Homolka

Se PowerShell è un'opzione, questa è la rotta preferita, dal momento che (potenzialmente) non dovrai installare nulla in più:

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

In caso contrario, Wget per Windows, come altri hanno sottolineato, è sicuramente la seconda opzione migliore. Come pubblicato in un'altra risposta, sembra che tu possa scaricare Wget da solo , oppure puoi prenderlo come parte di Cygwin o MSys .

Se per qualche motivo ti trovi bloccato in una distorsione temporale, utilizzando una macchina che non ha PowerShell e non hai accesso a un browser Web funzionante (ovvero, Internet Explorer è l'unico browser disponibile il sistema e le sue impostazioni sono corrotti) e il tuo file si trova su un sito FTP (al contrario di HTTP):

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

Se la memoria viene pubblicata, è presente da Windows 98 e posso confermare che è ancora presente in Windows 8 RTM (potrebbe essere necessario inserire appwiz.cpl e aggiungere/rimuovere funzionalità per ottenerlo). Questa utility può sia scaricare e caricare file da/verso siti FTP sul web. Può anche essere utilizzato negli script per automatizzare entrambe le operazioni.

Questo strumento incorporato è stato un vero risparmiatore di vita per me in passato, specialmente nei giorni di ftp.cdrom.com - Ho scaricato Firefox in quel modo una volta, su una macchina completamente rotta che aveva solo una connessione dial-up Internet connessione (quando la dimensione massima del pacchetto di sneakernet era ancora 1.44 MB, e Firefox era ancora chiamato "Netscape"/me trollface ).

Un paio di suggerimenti: è il suo processore di comandi, e ha una propria sintassi. Prova a digitare "aiuto". Tutti i siti FTP richiedono un nome utente e una password; ma se consentono agli utenti "anonimi", il nome utente è "anonimo" e la password è il tuo indirizzo email (puoi crearne uno se non vuoi essere rintracciato, ma di solito c'è una sorta di logica per assicurarti che sia un indirizzo email valido).

3
BrainSlugs83

E http://www.httrack.com/ ha una buona GUI (ed è gratuita), per il mirroring dei siti. Ha anche una versione per Linux.

2
Zsolt Botykai

Si potrebbe anche utilizzare wget impacchettato in PowerShell . ; ^) Per aprire, premi il tasto Windows e digita "powershell" o Windows-R e digita "powershell" e premi invio.

Nessuna installazione necessaria.

Una differenza interessante rispetto al wget convenzionale (più at that link ): non puoi semplicemente usare il maggiore di pipe in un file. wget in PowerShell è solo un comodo wrapper per Invoke-WebRequest, e devi usare la sua sintassi per scrivere su un file.

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

Puoi ottenere WGet per Windows qui . In alternativa puoi fare clic con il pulsante destro del mouse sul link di download dell'elemento che desideri scaricare e scegliere Salva come. Questo scaricherà il file e non lo aprirà nell'applicazione assegnata.

1
BinaryMisfit

Penso che l'installazione di wget via Chocolatey sia il modo più semplice.

  1. Installa Chocolatey
  2. Dalla riga di comando, digitare: choco install wget
  3. È quindi possibile utilizzare wget dalla riga di comando come su sistemi * nix.
0
sivabudh

Se si desidera una GUI, quindi provare VisualWget , che è effettivamente pulito e funzionalità completa. È basato su GNU Wget per il suo motore di download.

EDIT: collegamento aggiornato.

0
Wurlitzer

Come documentato in questo SU answer , è possibile utilizzare quanto segue in PowerShell:

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