Windows'ta komut satırından wget veya curl gibi dosyalar nasıl indirilir


342

Acrobat Reader / Quicktime / MS Word / her neyse, Internet Explorer veya Firefox'u açmadan doğrudan webden bir şey nasıl indirebilirim?

Windows kullanıyorum, bu yüzden Wget’ın bir Windows sürümü kullanılacaktı .


Sadece bir dosyayı sağ tıklayıp "Hedefi Farklı Kaydet" veya "Bağlantıyı Farklı Kaydet" veya "Farklı Kaydet" i (dil tarayıcınıza bağlı olarak değişir) vurmak işe yarar.
BrainSlugs83

25
Komut sahibi olmanın amacı, istediğiniz zaman bir toplu iş dosyası yazıp (belki de bir görev olarak planlanmış) çalıştırabilmektir. GUI'nin yetersiz kaldığı yer orası.
Jbm

4
MS Word ile nasıl indirirsiniz?
Jaime Hablutzel

5
@JaimeHablutzel Neden MS Word ile bir şey indirmeyi istemesin? MS Word bir terminal değildir.
Braden Best

1
@SDsolar Veya bu cevabı aşağıda sadece yükselt / iyileştir .
Franklin Yu,

Yanıtlar:


177

Windows için Wget çalışmalı.

Gönderen Wget Wiki SSS :

GNU Wget, en yaygın kullanılan internet protokolleri olan HTTP ve FTP kullanarak World Wide Web'den dosya almak için ücretsiz bir ağ aracıdır. Etkileşimsiz çalışır, bu nedenle oturumu kapattıktan sonra arka planda çalışmayı sağlar.

Gönderen SSS Bu bölümde , indirme bağlantıları önerilir:

Windows İkilileri

Bunun yerine Jernej Simončič'in izniyle bağlantı kullanılmıştır.


9
Winwget da var cybershade.us/winwget bir GUI isterseniz
Col

13
Bağımsız sürüm bu linkten indirilebilir .
Vito Gentile

5
Daha yeni, hatta yukarı güncel (bugün itibariyle) , Windows oluşturur Jernej Simonciç tarafından sağlanan,
Gras Çift

1
@ cixelsyd Alternatif kaynağa bağlantı güncellendi.
clearkimura

1
eternallybored.org/misc/wget/ sistemimdeki kurumsal antivirüs tarafından işaretlendi. Karbon Siyahı / Bit 9. Muhtemelen yanlış pozitif. Ancak sourceforge one çalışır. Sslv3'ü desteklemez.
TamusJRoyce

304

PowerShell kullanarak son zamanlarda keşfettiğim bir alternatif:

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

GET sorgularıyla da çalışır.

Dosyayı indirmek için kimlik bilgileri belirtmeniz gerekirse, aralarına aşağıdaki satırı ekleyin:

$client.Credentials =  Get-Credential                

Standart bir Windows kimlik bilgileri istemi açılır. Girdiğiniz bilgiler dosyayı indirmek için kullanılacaktır. $ Client nesnesini kullanacağınız süre boyunca bunu yalnızca bir kez yapmanız yeterlidir.


91
Ayrıca tek satırda da yapabilirsiniz:(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt','C:\tmp\file.txt')
schellack

16
@Rob powershell Windows'da yerleşiktir ...
nhinkle

9
Vista'dan yukarı, evet.
Arran

3
@ BrainSlugs83, kesinlikle, ama çoğu, birçok kişi hala XP kullanıyor. Akılda tutulması gereken sadece bir şey.
Arran

4
@ BrainSlugs83, hala eski Windows sistemlerinde bulunan kişilerin miktarını küçümsüyorsunuz. Sorunu anlamadım, sadece Vista'da yukarıya doğru olduğuna dikkat çektim. İnsanlar bunu görmezden gelmeyi seçebilir veya "hey teşekkür!" Diyebilir, ama siz ....? Bir sorunun varsa, bir sohbet oluştur ve konuşalım. Temsilcisi (sizin gibi) burada farketmeli ki bu tartışmanın yeri değil.
Arran,

82

PowerShell> = 3.0’ınız varsa, Invoke-WebRequest’i kullanabilirsiniz.

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

Veya golf

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

Windows'ta HTTP yoluyla bir dosya indirin


Bu tersine, sourceforge'daki (ve muhtemelen diğer sitelerdeki) yönlendirmelerle çalışmaz System.Net.WebClient. Ancak Invoke-WebRequestekleyerek çalışabilirsiniz -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox.
Ela782

İndirme ilerlemesini görmek için bir seçenek var mı?
Franklin Yu,

@ FranklinYu dosya yeterince büyük olup olmadığını gösterecektir
Steven Penny

Bir outfile belirtmemek için bir seçenek var mı, ancak yine de kaydedin ( wgetya da curl -O, curl --remote-nameya da curl -J?)
Tomasz Gandor

59

Windows'un kendi komut satırı indirme aracı var - BITSAdmin :

BITSAdmin, indirme veya yükleme işleri oluşturmak ve ilerlemelerini izlemek için kullanabileceğiniz bir komut satırı aracıdır.

EDIT : 26.01.15 - İşte bir dosyanın harici araçlar olmadan pencerelere nasıl indirilebileceği ile ilgili genel bir bakış

Ve tam bir bitsadmin örneği:

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

Düzenleme : 15.05.2018 - Ayrıca certutil ile bir dosya indirmek mümkün olduğu ortaya çıktı :

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

Certutil varsayılan olarak XP / Win2003'te yüklü değildir, ancak daha yeni Windows sürümlerinde kullanılabilir. XP / 2003 için Windows Server 2003 için Yönetici Araç Paketi'ne ihtiyacınız olacaktır.


7
İlginç. Bu, wget ile kıyaslandığında sakar bir yazılım parçası.
Matt H

2
Windows XP ile birlikte gelmediğini ve diğer sürümlerle birlikte gelmediğini unutmayın.
Ian Dunn

12
Güncelleme: BITSAdmin kullanımdan kaldırılmıştır ve Windows'un sonraki sürümlerinde kullanılacağı garanti edilmez. BITS hizmeti için yönetimsel araçlar artık BITS PowerShell cmdlet'leri tarafından sağlanmaktadır.
nulldev07

2
@MattH: çünkü ilk etapta wget olmak zorunda değil mi? - bkz en.wikipedia.org/wiki/Background_Intelligent_Transfer_Service
peterchen 27:13

4
Dosya eklenemiyor - 0x80070057
Tomáš Zato

31

Aşağıdaki metni kaydetme wget.jsve basitçe çağrı

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

Bu kod:

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

Bu komut dosyasında hangi dil var? Şu anki görevim için kullanışlı görünüyor. Daha fazla referans belgesi bulmak istiyorum. Gibi pek görünmüyor
G-.

1
Tek dosyalar için kullanışlıdır. Özyinelemeli indirme ve https için geliştirilmesi gerekiyor.
opticyclic

4
@ G. Partiye geç kaldım, ama bu JavaScript.
prooffreader

Bunu database.clamav.net/daily.cvd için yapmaya çalıştım , fakat 44MB: 88kB'dan sadece 88kB indirildi:
kokbira 10:17

22

Burada Windows için yerel bir cURL var . SSL desteği olan ve olmayan birçok lezzet vardır.

Cygwin'in ve bagajların fazladan bagajına ihtiyacınız yok , sadece küçük bir EXE dosyası.


Hem olduğunu bilmek de önemlidir wgetve curl, Windows Powershell tüm modern versiyonları yerleşik adlar. Eşdeğerdirler.

wgetİşlevsellik elde etmek için fazladan dosya veya indirme gerekmez :

Powershell'de Kıvrılmayı Kullanma (Sosyal Geek)

Alıntı:

GitHub deposundan dosya indirene benzer bir cURL komutu yazabilirsiniz.

kıvırmak http://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json

ve çalışır gibi görünecek ama aslında yaptığı şey sadece cURL'yi takma ad olarak kullanmak. Yukarıdaki örnekte, olacak olan şey, dosyanın kendisi yerine yalnızca başlıkları elde etmenizdir.

PowerShell'deki takma adlar, daha uzun komutlar için kısayollar oluşturmanıza olanak tanır; böylece bunları her zaman yazmak zorunda kalmazsınız.

Get-Alias ​​komutunu yazarsanız, size PowerShell'de kullanılan tüm Diğer Adların bir listesini verecektir. Görebildiğiniz gibi, curl komutu sadece Invoke-WebRequest komutunu çağırır. Bunlar benzer ancak aynı değil, bu yüzden yukarıdaki istek bizim için çalışmıyor.

görüntü tanımını buraya girin

Bunun PowerShell'de düzgün çalışmasını sağlamak için, -OutFileburada gösterilen değişkenleri ve argümanı kullanmak en kolay yoldur :

görüntü tanımını buraya girin

(dosya adı “ https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ” resminde kesildi )

Bu sözdizimi, hedef dosyanın tüm içeriğini azuredeploy.jsonyerel dosyaya indirirnewfile.json


Birincil avantaj, Powershell'in içine yerleştirilmiş olmasıdır, bu nedenle bu kod doğrudan indirme işlemiyle doğrudan çalışır veya herhangi bir Windows sürümü için çalışabilmesi için başka herhangi bir ekstra dosya oluşturma gerekir.


Bu, doğrudan bir satırda yapılır, ancak satır oldukça uzar ve bir bakışta hemen okunabilir değildir.
SDsolar

21

Yukarıda açıklanan PowerShell yöntemini çağıran hızlı bir myGet.bat dosyası hazırladım.

@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

Boşluklu dosya adı için URL’yi Ayrıştırma URL’sinden bir miktar ödünç aldım .


1
neden aşağı oy? Bu bana tamam görünüyor ve soruya doğrudan bir cevaptır. Evet sıkıntılı ve url'deki ve işaretlerden (&) kaçan gibi iyileştirme kullanabilir, ancak olduğu gibi çalışır.
matt wilkie

Sadece bir PowerShell betiği yazmak daha kolay olmaz mıydı ???
SamB

1
powershell.exe -Command "Invoke-WebRequest -OutFile ./file-name https://location/file-name"Kod satırında basit bir satır powershell kullanımı, sabit kodlama konumu ve dosya adıdır.
James Eby,

8

Aynı şeyi arıyordum ve yukarıdaki paketlerin hiçbirini kurma ayrıcalığım olmadığından, küçük bir geçici çözüm için gittim (30 + dosya indirmek için):

  • Bir toplu iş dosyası oluşturdum
  • Tüm dosyalar listelenmiştir
  • firefox.exeHer satırın başına koy
  • Firefox dizinine gittim Program Files
  • Koştum.

4

Eğer PowerShell bir seçenektir (potansiyel olarak) ekstra bir şey yüklemek zorunda kalmazsınız çünkü o tercih edilen yol, var:

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

Bunu başaramamak, Wget for Windows, diğerlerinin de belirttiği gibi kesinlikle en iyi ikinci seçenek. Başka bir cevapta da belirtildiği gibi , Wget'ı kendi başına indirebilir veya Cygwin veya MSys'in bir parçası olarak alabilirsiniz .

Herhangi bir sebepten dolayı, kendinizi PowerShell'e sahip olmayan ve çalışan bir web tarayıcısına (örneğin, Internet Explorer sistemdeki tek tarayıcı olan Internet tarayıcısı) sıfır bir erişime sahip olduğunuzda, bir zaman tüneli içinde sıkışmış bulursanız bozuk) ve dosyanız bir FTP sitesinde (HTTP yerine):

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

Bellek hizmet veriyorsa, Windows 98’den beri orada ve Windows 8 RTM’de hala orada olduğunu onaylayabilirim appwiz.cpl. Bu yardımcı program, web'deki FTP sitelerine dosya yükleyip indirebilir. Her iki işlemi de otomatikleştirmek için komut dosyalarında da kullanılabilir.

Yerleşik olan bu araç geçmişte benim için gerçek bir hayat kurtarıcı oldu, özellikle de ftp.cdrom.com günlerinde - Sadece bir çevirmeli İnternet bağlantısı olan tamamen bozuk bir makineye Firefox'u bir kez bu şekilde indirdim. bağlantı (sneakernet'in maksimum paket büyüklüğü hala 1.44 MB iken ve Firefox hala "Netscape" / me trollface yapıyordu) geri döndü .

Birkaç ipucu: kendi komut işlemcisi ve kendi sözdizimine sahip. "Yardım" yazmayı deneyin. Tüm FTP siteleri bir kullanıcı adı ve şifre gerektirir; ancak "adsız" kullanıcılara izin veriyorlarsa, kullanıcı adı "adsız" dır ve şifre e-posta adresinizdir (takip edilmek istemiyorsanız bir tanesini yapabilirsiniz, ancak genellikle emin olmak için bir tür mantık vardır) geçerli bir e-posta adresi).


Ftp komut satırını düşünmek için +1! Ancak partiye katılmadan önce hem wget hem de powershell'den bahsedilmişti. : - /
matt wilkie

Gördüğüm diğer powershell cevapları hepsi çoklu gömleklerdi ve / veya onlara bazı kod kokusu vardı - bu bir dosyayı indirmek için kısa ve basit bir gömlekti. - Ayrıca tüm üsleri kapsayan bir cevap vermek istedim. :-)
BrainSlugs83 0

1
Hedef dosyada iki soru işaretinin neden olduğundan emin değilimC:\tmp\file.tx??t
Ploni



2

Paketlenmiş PowerShell'de de kullanabilirsinizwget . ; ^) Açmak için Windows tuşuna basın ve "powershell" veya Windows-R tuşlarına basın ve "powershell" yazın ve return tuşuna basın.

Kurulum gerekmez.

Geleneksel olandan ilginç bir fark wget( bu bağlantıda daha fazlası ): Bir dosyaya yönlendirmek için daha büyük olanı kullanamazsınız. wgetPowerShell'de sadece kolaylık sağlayan bir sarmalayıcıdır Invoke-WebRequestve bir dosyaya yazmak için sözdizimini kullanmanız gerekir.

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

1
-OutFileiş yaptı!
Dimitry K

1

WGet for Windows programını buradan alabilirsiniz . Alternatif olarak, indirmek istediğiniz öğenin indirme bağlantısını sağ tıklayıp Farklı Kaydet'i seçebilirsiniz. Bu dosyayı indirecek ve atanmış uygulamada açmayacaktır.


1

Bence wgetChocolatey ile kurmak en kolay yol.

  1. Chocolatey yükleyin
  2. Komut satırından şunu yazın: choco install wget
  3. Daha sonra wget* nix sistemlerinde olduğu gibi komut satırından kullanabilirsiniz .

1

Https://lolbas-project.github.io adresinde/download işlevi arayın .

Şu anda var Bitsadmin.exe, Certutil.exe, Esentutl.exe, Expand.exe, Extrac32.exe, Findstr.exe, Hh.exe, Ieexec.exe, Makecab.exe, Replace.exe, Windows Vista, Windows 7, Windows 8, Windows 8.1'de Windows 10 ve eşdeğer Sunucu sürümleri için.



0

Bu SU cevabında belgelendiği gibi , Powershell'de aşağıdakileri kullanabilirsiniz:

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

-1

Gnuwin32 kullanmaya bir alternatif wget içeren unxutils'tir .


unxutils ile yönetebilirsiniz ama eski, wget'in eski bir versiyonunu kullanıyor. gnuwin32 kullanılacak şey. kurulumu kolay değil ve bir şeyleri bulmak kolay değil, ama unxutils'ten çok daha fazlası var.
barlop

-3

Windows için görsel bir yazıya ihtiyacınız varsa , burada bir tane var.
Bununla veri veya dosya gönderebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.