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


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

Saya menggunakan Windows, jadi versi Windows dari Wget akan lakukan.


283


asal


Cukup klik kanan file dan tekan "Save Target As" atau "Save Link As" atau "Save As" (bahasa bervariasi tergantung pada browser Anda) akan berfungsi. - BrainSlugs83
Intinya memiliki perintah adalah dapat menulis file batch dan menjalankannya (mungkin dijadwalkan sebagai tugas) kapan saja Anda mau. Di situlah GUI jatuh pendek. - Jbm
Bagaimana Anda mengunduh dengan MS Word? - Jaime Hablutzel
@JaimeHablutzel Mengapa Anda ingin mengunduh sesuatu melalui MS Word? MS Word bukan terminal. - Braden Best
@SDsolar Atau hanya upvote / tingkatkan jawaban ini di bawah. - Franklin Yu


Jawaban:


Wget untuk Windows harus bekerja.

Dari FAQ Wget Wiki:

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

Dari bagian FAQ ini, tautan unduhan disarankan:

Binari Windows

Link dengan courtesy of Jernej Simončič digunakan sebagai gantinya.


156



Ada juga Winwget cybershade.us/winwget jika Anda lebih suka gui - Col
Versi standalone dapat diunduh dari Link ini. - Vito Gentile
Lebih baru, bahkan terbaru (mulai hari ini) Windows dibangun, disediakan oleh Jernej Simončič - Gras Double
@VitoShadow tautan rusak - The Red Pea
Tautan @cixelsyd Diperbarui ke sumber alternatif. - clearkimura


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")

Ia bekerja juga dengan GET queries.

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

$client.Credentials =  Get-Credential                

Prompt mandat jendela standar akan muncul. Kredensial yang Anda masukkan di sana akan digunakan untuk mengunduh file. Anda hanya perlu melakukan ini sekali untuk semua waktu Anda akan menggunakan objek $ client.


273



Anda juga dapat melakukannya dalam satu baris: (new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt','C:\tmp\file.txt') - schellack
@Rob powershell dibangun pada Windows ... - nhinkle♦
Dari Vista ke atas, ya. - Arran
@ BrainSlugs83, tentu saja, tapi banyak, banyak, orang masih menggunakan XP. Itu hanya sesuatu yang perlu diingat. - Arran
@ BrainSlugs83, Anda meremehkan jumlah orang yang masih menggunakan sistem Windows lama. Saya tidak mengerti masalah ini, saya menunjukkan 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 kita bisa bicara. Seseorang dengan reputasi (seperti Anda) harus menyadari sini bukan tempat untuk diskusi ini. - Arran


Jika Anda memiliki PowerShell> = 3.0, Anda dapat menggunakannya 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


64



Ini tidak bekerja dengan pengalihan pada sourceforge (dan mungkin situs lain), dibandingkan dengan System.Net.WebClient. Namun Anda bisa membuatnya Invoke-WebRequest bekerja dengan menambahkan -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox. - Ela782
Ini adalah jawaban yang benar sekarang, @ CédricBelin benar. Pertanyaan & jawaban yang diterima sudah cukup lama. - Factor Mystic
Untuk menjalankan ini dari terminal cmd: powershell -command "& {&'iwr' index.html http://superuser.com}" - dario_ramos
Apakah ada opsi untuk melihat kemajuan pengunduhan? - Franklin Yu
@FranklinYu kemajuan akan menunjukkan apakah file cukup besar - Steven Penny


Windows memiliki utilitas unduh baris perintah sendiri - BITSAdmin:

BITSAdmin adalah alat baris perintah yang dapat Anda gunakan untuk membuat unduhan   atau unggah pekerjaan dan pantau perkembangan mereka.

EDIT: 26.01.15 - Berikut ini 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

Edit : 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 di XP / Win2003 tetapi tersedia pada versi windows yang lebih baru.Untuk XP / 2003 Anda memerlukan Paket Alat Admin untuk server windows 2003


39



Menarik. Itu adalah salah satu perangkat lunak canggung dibandingkan dengan wget. - Matt H
Perhatikan bahwa itu tidak dikirimkan dengan Windows XP, dan mungkin tidak dengan versi lain juga. - Ian Dunn
Pembaruan: BITSAdmin tidak lagi digunakan dan tidak dijamin akan tersedia di versi Windows yang akan datang. Alat administratif untuk layanan BITS sekarang disediakan oleh BITS PowerShell cmdlet. - nulldev07
@MattH: karena tidak ada yang harus dilemparkan di tempat pertama? - Lihat en.wikipedia.org/wiki/Background_Intelligent_Transfer_Service - peterchen
Tidak dapat menambahkan file - 0x80070057 - Tomáš Zato


Simpan teks berikut sebagai wget.js dan 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");
*/

28



Bahasa apa skrip ini? Terlihat berguna untuk tugas saya saat ini. Saya ingin mencari lebih banyak dokumentasi referensi. Tidak terlihat seperti vb - G-.
Berguna untuk file tunggal. Perlu ditingkatkan untuk unduhan rekursif dan https. - opticyclic
@ 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


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.


16



mengapa downvote? ini terlihat baik bagi saya dan merupakan tanggapan langsung terhadap pertanyaan itu. Ya itu kikuk dan bisa menggunakan peningkatan, seperti melarikan diri ampersand (&) di url, tetapi berfungsi sebagaimana adanya. - matt wilkie


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

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


Penting juga untuk mengetahui bahwa ada keduanya wget dan curl alias dibangun ke semua versi modern Windows Powershell. Mereka setara.

Tidak ada file atau unduhan tambahan yang diperlukan untuk didapatkan wgetfungsi:

Menggunakan Curl In Powershell (The Sociable Geek)

Kutipan:

Anda dapat mengetikkan perintah cURL seperti yang mengunduh file dari a   Repositori GitHub.

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

dan itu akan tampak seperti berhasil tetapi apa yang sebenarnya dilakukan adalah adil   menggunakan cURL sebagai alias. Dalam contoh di atas, apa yang akan terjadi adalah   Anda hanya akan mendapatkan header daripada file itu sendiri.

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

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

enter image description here

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

enter image description here

(nama file terpotong pada 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.json ke file lokal newfile.json


Keuntungan utamanya adalah bahwa ia dibangun ke dalam Powershell sendiri sehingga kode ini akan dijalankan secara langsung tanpa unduhan atau kreasi file tambahan apa pun diperlukan untuk membuatnya berfungsi pada setiap versi Windows modern.


15



Ini dilakukan secara langsung pada satu baris, tetapi garisnya menjadi sangat panjang dan tidak langsung dapat dibaca sekilas. - SDsolar
Cara terbaik, terima kasih - Konstantin Chernov


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

  • Saya membuat file batch
  • Daftar semua file
  • Taruh firefox.exe di awal setiap baris
  • Pergi ke direktori firefox di Program Files
  • Jalankan itu.

8





Jika PowerShell adalah pilihan, itulah rute yang disukai, karena Anda (berpotensi) tidak perlu menginstal sesuatu yang ekstra:

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

Kegagalan itu, Wget untuk Windows, sebagaimana orang lain telah jelaskan adalah pilihan terbaik kedua. Seperti yang diposting di jawaban lain sepertinya Anda bisa unduh Wget dengan sendirinya, atau Anda dapat mengambilnya sebagai bagian dari Cygwin atau MSys.

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

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

Jika memori berfungsi sudah ada sejak Windows 98, dan saya dapat mengkonfirmasi bahwa itu masih ada di Windows 8 RTM (Anda mungkin harus masuk ke appwiz.cpl dan tambahkan / hapus fitur untuk mendapatkannya). Utilitas ini dapat mengunduh dan mengunggah file ke / dari situs FTP di web. Ini juga dapat digunakan dalam skrip untuk mengotomatiskan operasi.

Alat ini sedang dibangun telah menjadi penyelamat kehidupan nyata bagi saya di masa lalu, terutama di masa ftp.cdrom.com - saya mengunduh Firefox seperti 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 melakukan trollface).

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


3



1 untuk memikirkan ftp command line! Namun wget dan PowerShell berdua disebutkan dengan baik sebelum Anda bergabung dengan partai, jadi -1 di sana. : - / - matt wilkie
Jawaban powershell lainnya yang saya lihat adalah semua multi-liner dan / atau memiliki kode bau kepada mereka - ini adalah satu liner singkat & sederhana untuk mengunduh file. - Juga saya ingin memberikan jawaban yang mencakup semua basis. :-) - BrainSlugs83
Saya tidak yakin mengapa Anda memiliki dua tanda tanya di file tujuan C:\tmp\file.tx??t - Ploni


Cygwin memiliki Wget (dan banyak lagi utilitas).


3





Dan http://www.httrack.com/ memiliki GUI yang bagus (dan gratis), untuk situs-situs mirroring. Ini juga memiliki versi Linux.


2