Cara mengunduh file dari baris perintah di Windows seperti wget atau curl

348

Bagaimana saya bisa mengunduh sesuatu dari web secara langsung tanpa Internet Explorer atau Firefox membuka Acrobat Reader / Quicktime / MS Word / apa pun?

Saya menggunakan Windows, jadi Wget versi Windows akan melakukannya.

Peter Mortensen
sumber
Cukup mengklik kanan file dan menekan "Save Target As" atau "Save Link As" atau "Save As" (bahasa bervariasi tergantung pada browser Anda) akan berfungsi.
BrainSlugs83
25
Inti dari memiliki perintah adalah dapat menulis file batch dan menjalankannya (mungkin dijadwalkan sebagai tugas) kapan saja Anda inginkan. Di situlah GUI gagal.
Jbm
4
Bagaimana cara Anda mengunduh dengan MS Word?
Jaime Hablutzel
5
@JaimeHablutzel Mengapa Anda ingin mengunduh sesuatu melalui MS Word? MS Word bukan terminal.
Braden Terbaik
1
@SDsolar Atau cukup perbarui / tingkatkan jawaban ini di bawah.
Franklin Yu

Jawaban:

180

Wget untuk Windows seharusnya berfungsi.

Dari FAQ Wget Wiki :

GNU Wget adalah utilitas jaringan gratis untuk mengambil file dari World Wide Web menggunakan HTTP dan FTP, dua protokol Internet yang paling banyak digunakan. Ini bekerja secara non-interaktif, sehingga memungkinkan pekerjaan di latar belakang, setelah keluar.

Dari bagian FAQ ini , tautan unduhan disarankan:

Binari Windows

Tautan dengan izin dari Jernej Simončič digunakan sebagai gantinya.

clearkimura
sumber
9
Ada juga Winwget cybershade.us/winwget jika Anda lebih suka gui
Col
13
Versi mandiri dapat diunduh dari tautan ini .
Vito Gentile
5
Yang lebih baru, bahkan terkini (hingga hari ini) build Windows , disediakan oleh Jernej Simončič
Gras Double
1
@cixelsyd Tautan yang diperbarui ke sumber alternatif.
clearkimura
1
eternallybored.org/misc/wget/ ditandai oleh antivirus perusahaan di sistem saya. Carbon Black / Bit 9. Mungkin salah positif. Tapi sourceforge berjalan. Tidak mendukung sslv3.
TamusJRoyce
311

Alternatif yang saya temukan baru-baru ini, menggunakan PowerShell:

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

Ini juga berfungsi dengan GET kueri.

Jika Anda perlu menentukan kredensial untuk mengunduh file, tambahkan baris berikut di antaranya:

$client.Credentials =  Get-Credential                

Prompt kredensial windows standar akan muncul. Kredensial yang Anda masukkan di sana akan digunakan untuk mengunduh file. Anda hanya perlu melakukan ini sekali saja selama Anda akan menggunakan objek $ client.

Ubeogesh
sumber
91
Anda juga dapat melakukannya dalam satu baris:(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt','C:\tmp\file.txt')
schellack
16
@Rob powershell terintegrasi ke Windows ...
nhinkle
9
Dari Vista ke atas, ya.
Arran
3
@ BrainSlugs83, tentu saja, tetapi banyak, banyak , orang masih menggunakan XP. Itu hanya sesuatu yang perlu diingat.
Arran
4
@ BrainSlugs83, Anda meremehkan jumlah orang yang masih menggunakan sistem Windows lama. Saya tidak mengerti masalahnya, saya tunjukkan itu hanya pada Vista ke atas. Orang dapat memilih untuk mengabaikannya, atau mengatakan "hei terima kasih!", Tetapi Anda ....? Jika Anda memiliki masalah, buat obrolan dan kami dapat berbicara. Seseorang dengan perwakilan (seperti Anda) harus menyadari di sini bukan tempat untuk diskusi ini.
Arran
83

Jika Anda memiliki PowerShell> = 3.0, Anda dapat menggunakan Invoke-WebRequest

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

Atau bermain golf

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

Unduh file melalui HTTP di Windows

Steven Penny
sumber
Ini tidak berfungsi dengan pengalihan di sourceforge (dan mungkin situs lain), yang bertentangan System.Net.WebClient. Namun Anda dapat Invoke-WebRequestbekerja dengan menambahkan -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox.
Ela782
Apakah ada opsi untuk melihat perkembangan pengunduhan?
Franklin Yu
@ FranklinYu kemajuan akan menunjukkan jika file tersebut cukup besar
Steven Penny
Apakah ada pilihan untuk tidak menentukan outfile, tapi masih menyimpan (seperti wgetatau curl -O, curl --remote-nameatau curl -J?)
Tomasz Gandor
60

Windows memiliki utilitas unduh baris perintahnya sendiri - BITSAdmin :

BITSAdmin adalah alat baris perintah yang dapat Anda gunakan untuk membuat unduhan atau mengunggah pekerjaan dan memantau perkembangannya.

EDIT : 26.01.15 - Inilah ikhtisar saya tentang bagaimana suatu file dapat diunduh di windows tanpa alat eksternal

Dan contoh bitadmin lengkap:

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

Sunting : 15.05.2018 - ternyata itu mungkin untuk mengunduh file dengan certutil juga :

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

Certutil tidak diinstal secara default pada XP / Win2003 tetapi tersedia pada versi windows yang lebih baru. Untuk XP / 2003 Anda akan memerlukan Paket Alat Admin untuk windows server 2003

npocmaka
sumber
7
Menarik. Itu adalah satu bagian dari perangkat lunak yang canggung dibandingkan dengan wget.
Matt H
2
Perhatikan bahwa itu tidak dikirimkan dengan Windows XP, dan mungkin juga tidak dengan versi lain.
Ian Dunn
12
Pembaruan: BITSAdmin sudah usang dan tidak dijamin akan tersedia di versi Windows yang akan datang. Alat administratif untuk layanan BITS sekarang disediakan oleh cmdlet BITS PowerShell.
nulldev07
2
@ MatH: karena itu tidak harus diandaikan menjadi wget di tempat pertama? - lihat en.wikipedia.org/wiki/Background_Intelligent_Transfer_Service
peterchen
4
Tidak dapat menambahkan file - 0x80070057
Tomáš Zato
32

Simpan teks berikut ini wget.jsdan panggil saja

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

Ini kodenya:

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");
*/
pengguna190042
sumber
Bahasa apa yang digunakan skrip ini? Terlihat berguna untuk tugas saya saat ini. Saya ingin mencari lebih banyak dokumentasi referensi. Tidak terlihat seperti vb
G-.
1
Berguna untuk file tunggal. Perlu ditingkatkan untuk unduhan berulang dan https.
Opticyclic
4
@ G-. Saya terlambat ke pesta, tapi itu JavaScript.
prooffreader
Saya mencoba melakukan itu untuk database.clamav.net/daily.cvd , tetapi hanya mengunduh 88kB dari 44MB :(
kokbira
22

Ada cURL asli untuk Windows yang tersedia di sini . Ada banyak rasa yang tersedia - dengan dan tanpa dukungan SSL.

Anda tidak perlu bagasi ekstra Cygwin dan sejenisnya, cukup satu file EXE kecil.


Penting juga untuk mengetahui bahwa ada keduanya wgetdan curlalias yang dibangun di semua versi modern Windows Powershell. Mereka setara.

Tidak diperlukan file atau unduhan tambahan untuk mendapatkan wgetfungsionalitas:

Menggunakan Curl In Powershell (The Sociable Geek)

Kutipan:

Anda bisa mengetikkan perintah cURL seperti yang mengunduh file dari repositori GitHub.

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

dan sepertinya akan berfungsi tetapi apa yang sebenarnya dilakukannya hanya menggunakan cURL sebagai alias. Dalam contoh di atas, apa yang akan terjadi adalah Anda hanya akan mendapatkan header, bukan file itu sendiri.

Alias ​​di PowerShell memungkinkan Anda membuat pintasan untuk perintah yang lebih lama sehingga Anda tidak perlu mengetikkannya sepanjang waktu.

Jika Anda mengetikkan perintah Get-Alias, itu akan memberi Anda daftar semua Alias ​​yang digunakan di PowerShell. Seperti yang Anda lihat, perintah curl hanya memanggil perintah Invoke-WebRequest. Mereka serupa tetapi tidak sama yang mengapa permintaan di atas tidak bekerja untuk kita.

masukkan deskripsi gambar di sini

Agar ini berfungsi dengan benar di PowerShell, cara termudah adalah dengan menggunakan variabel dan -OutFileargumen seperti yang ditunjukkan di sini:

masukkan deskripsi gambar di sini

(nama file terpotong dalam gambar “ https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ”)

Sintaks ini akan mengunduh konten lengkap dari file target azuredeploy.jsonke file lokalnewfile.json


Keuntungan utama adalah bahwa ia dibangun ke dalam Powershell sendiri sehingga kode ini akan dieksekusi langsung tanpa unduhan atau kreasi file tambahan lainnya diperlukan untuk membuatnya berfungsi pada versi Windows modern.

SDsolar
sumber
Hal ini dilakukan secara langsung pada satu baris, tetapi garis tersebut menjadi cukup panjang dan tidak segera dibaca sekilas.
SDsolar
21

Saya membuat file myGet.bat cepat yang memanggil metode PowerShell yang dijelaskan di atas.

@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

Saya meminjam beberapa kode dari Parsing URL untuk nama file dengan spasi .

MartinC
sumber
1
mengapa downvote? ini terlihat oke bagi saya dan merupakan jawaban langsung terhadap pertanyaan tersebut. Ya itu kikuk dan dapat menggunakan peningkatan, seperti melarikan diri ampersand (&) di url, tetapi berfungsi sebagaimana mestinya.
matt wilkie
Bukankah lebih mudah menulis skrip PowerShell saja ???
SamB
1
powershell.exe -Command "Invoke-WebRequest -OutFile ./file-name https://location/file-name"<- Sederhana satu baris mendukung penggunaan dalam file skrip lokasi pengkodean yang sulit dan nama file.
James Eby
8

Saya sedang mencari yang sama, dan karena saya tidak punya hak istimewa untuk menginstal salah satu paket di atas, saya mencari solusi kecil (untuk mengunduh 30 file +):

  • Saya membuat file batch
  • Mencantumkan semua file
  • Letakkan firefox.exedi awal setiap baris
  • Pergi ke direktori firefox di Program Files
  • Lari itu.
Simon
sumber
4

Jika PowerShell adalah sebuah opsi, itu rute yang disukai, karena Anda (berpotensi) tidak perlu menginstal tambahan apa pun:

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

Kegagalan itu, Wget for Windows, seperti yang ditunjukkan orang lain jelas merupakan pilihan terbaik kedua. Seperti yang diposting di jawaban lain, sepertinya Anda dapat mengunduh Wget dengan sendirinya , atau Anda dapat mengambilnya sebagai bagian dari Cygwin atau MSys .

Jika karena alasan tertentu, Anda menemukan diri Anda terjebak dalam waktu bengkok, menggunakan mesin yang tidak memiliki PowerShell dan Anda tidak memiliki akses ke browser web yang berfungsi (yaitu, Internet Explorer adalah satu-satunya browser di sistem, dan pengaturannya rusak), dan file Anda ada di situs FTP (tidak seperti HTTP):

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

Jika memori berfungsi sudah ada di sana sejak Windows 98, dan saya dapat mengkonfirmasi bahwa itu masih ada di Windows 8 RTM (Anda mungkin harus masuk appwiz.cpldan menambahkan / menghapus fitur untuk mendapatkannya). Utilitas ini dapat mengunduh dan mengunggah file ke / dari situs FTP di web. Itu juga dapat digunakan dalam skrip untuk mengotomatisasi operasi mana pun.

Alat ini adalah alat bawaan untuk saya di masa lalu, terutama di masa-masa ftp.cdrom.com - Saya mengunduh Firefox dengan cara itu sekali, pada mesin yang benar-benar rusak yang hanya memiliki Internet dial-up koneksi (kembali ketika ukuran paket maksimum sneakernet masih 1,44 MB, dan Firefox masih disebut "Netscape" / saya tidak trollface ).

Beberapa tips: ini adalah prosesor perintahnya sendiri, dan memiliki sintaksnya sendiri. Coba ketikkan "bantuan". Semua situs FTP memerlukan nama pengguna dan kata sandi; tetapi jika mereka mengizinkan pengguna "anonim", nama pengguna adalah "anonim" dan kata sandinya adalah alamat email Anda (Anda dapat memperbaikinya jika Anda tidak ingin dilacak, tetapi biasanya ada semacam logika untuk memastikannya alamat email yang valid).

BrainSlugs83
sumber
+1 untuk memikirkan ftp baris perintah! Namun wget dan PowerShell disebutkan dengan baik sebelum Anda bergabung dengan pesta, jadi -1 di sana. : - /
matt wilkie
Jawaban PowerShell lainnya yang saya lihat semuanya multi-liner dan / atau memiliki beberapa bau kode - ini adalah liner pendek & sederhana untuk mengunduh file. - Juga saya ingin memberikan jawaban yang mencakup semua pangkalan. :-)
BrainSlugs83
1
Saya tidak yakin mengapa Anda memiliki dua tanda tanya di file tujuanC:\tmp\file.tx??t
Ploni
3

Cygwin memiliki Wget (dan banyak utilitas lainnya).

Rich Homolka
sumber
2

Anda juga bisa menggunakan wgetpaket yang ada di PowerShell . ; ^) Untuk membuka, tekan tombol Windows dan ketik "PowerShell" atau Windows-R dan ketik "PowerShell" dan tekan kembali.

Tidak diperlukan instalasi.

Satu perbedaan menarik dari konvensional wget(lebih banyak pada tautan itu ): Anda tidak bisa hanya menggunakan yang lebih besar daripada untuk mem-pipe ke file. wgetdi PowerShell hanyalah pembungkus kenyamanan untuk Invoke-WebRequest, dan Anda perlu menggunakan sintaksnya untuk menulis ke file.

wget https://superuser.com/questions/25538 -OutFile rubySlippers.html
ruffin
sumber
1
-OutFilemelakukan pekerjaan!
Dimitry K
1

Anda bisa mendapatkan WGet untuk Windows di sini . Atau Anda dapat mengklik kanan tautan unduhan dari item yang ingin Anda unduh dan pilih Simpan Sebagai. Ini akan mengunduh file dan tidak membukanya di aplikasi yang ditugaskan.

BinaryMisfit
sumber
1

Saya pikir menginstal wgetmelalui Chocolatey adalah cara termudah.

  1. Instal Chocolatey
  2. Dari baris perintah, ketik: choco install wget
  3. Anda kemudian dapat menggunakan wgetdari baris perintah seperti pada sistem * nix.
sivabudh
sumber
1

Cari /downloadfungsi di https://lolbas-project.github.io .

Saat ini ada Bitsadmin.exe, Certutil.exe, Esentutl.exe, Expand.exe, Extrac32.exe, Findstr.exe, Hh.exe, Ieexec.exe, Makecab.exe, Replace.exeuntuk Windows vista, Windows 7, Windows 8, Windows 8.1, Windows 10 dan versi Server setara.

noraj
sumber
0

Jika Anda menginginkan GUI, cobalah VisualWget , yang sebenarnya bersih, dan fitur penuh. Ini didasarkan pada GNU Wget untuk mesin unduhannya.

EDIT: tautan yang diperbarui.

Wurlitzer
sumber
1
di sini adalah tautan yang diperbarui: sites.google.com/site/visualwget/… (unduhan ada di bagian bawah halaman, gunakan panah kecil di sebelah kanan)
Reed Hedges
0

Seperti yang didokumentasikan dalam jawaban SU ini , Anda dapat menggunakan yang berikut di Powershell:

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

Alternatif untuk menggunakan gnuwin32 adalah unxutils yang menyertakan wget.

Chris Chilvers
sumber
Anda dapat mengelola dengan unxutils tetapi sudah tua, ia menggunakan versi lama wget. gnuwin32 adalah hal yang digunakan. tidak cukup nyaman untuk diinstal dan tidak mudah untuk menemukan hal-hal, tetapi memiliki lebih dari unxutils juga.
barlop
-3

Jika Anda membutuhkan visual yang Post untuk Windows, di sini adalah salah satu.
Anda dapat memposting data atau file dengannya.

WeGoToMars
sumber