it-swarm.asia

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

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 versi Windows dari Wget akan dilakukan.

328
Paolo Tedesco

Wget untuk Windows harus berfungsi.

Dari Wget Wiki FAQ :

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.

173
Tony

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.

297
Paolo Tedesco

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

79
Steven Penny

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 gambaran umum saya tentang bagaimana suatu file dapat diunduh pada 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 memungkinkan 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 memerlukan Paket Alat Admin untuk windows server 2003

55
npocmaka

Simpan teks berikut sebagai wget.js dan cukup panggil

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");
*/
30
user190042

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

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


Penting juga untuk mengetahui bahwa ada alias wget dan curl yang ada di semua versi Windows Powershell modern. Mereka setara.

Tidak diperlukan file atau unduhan tambahan untuk mendapatkan fungsionalitas wget:

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.

enter image description here

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

enter image description here

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

Sintaks ini akan mengunduh seluruh isi dari file target azuredeploy.json ke file lokal newfile.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 Windows versi modern apa pun.

20
Gaurav Kumar

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.

20
MartinC

Saya sedang mencari yang sama, dan karena saya tidak memiliki 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.exe di awal setiap baris
  • Pergi ke direktori firefox di Program Files
  • Lari itu.
8
Jesse P Francis

Jika PowerShell adalah pilihan, 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 untuk Windows, seperti yang ditunjukkan orang lain jelas merupakan pilihan terbaik kedua. Seperti yang diposting pada 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 lekukan waktu, 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 (sebagai lawan HTTP):

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

Jika memori berfungsi, sudah ada di sana sejak Windows 98, dan saya dapat memastikan bahwa masih ada di Windows 8 RTM (Anda mungkin harus masuk ke appwiz.cpl dan menambah/menghapus 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 mana pun.

Alat ini adalah alat bawaan untuk saya di masa lalu, terutama di zaman ftp.cdrom.com - Saya mengunduh Firefox dengan cara itu sekali, pada mesin yang benar-benar rusak dan 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 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).

4
BrainSlugs83

Cygwin memiliki Wget (dan banyak utilitas lainnya).

3
Rich Homolka

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

2
Zsolt Botykai

Anda juga bisa menggunakan wget yang dikemas dalam 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 wget konvensional (lebih banyak di tautan itu ): Anda tidak bisa hanya menggunakan yang lebih besar daripada untuk menyalurkan ke file. wget di 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
2
ruffin

Cari fungsi /download pada https://lolbas-project.github.io .

Saat ini terdapat Bitsadmin.exe, Certutil.exe, Esentutl.exe, Expand.exe, Extrac32.exe, Findstr.exe, Hh.exe, Ieexec.exe, Makecab.exe, Replace.exe untuk Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 dan versi Server yang setara.

1
noraj

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

1
BinaryMisfit

Saya pikir menginstal wget via Chocolatey adalah cara termudah.

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

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

EDIT: tautan yang diperbarui.

0
Wurlitzer

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

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