Windows komut satırını kullanarak indirmek mümkün mü?


123

Herhangi bir standart dışı (Windows dahil) yardımcı program kullanmadan, Windows komut satırını kullanarak indirmek mümkün mü?

Tercih edilen sürüm Windows XP'dir, ancak daha yeni sürümleri bilmek de ilginçtir.

Sorumu daha da netleştirmek için:

  • HTTP kullanıyor olmalı
  • Dosyanın kaydedilmesi gerekiyor
  • Standart temiz Windows kurulumu, ekstra araç yok

Temel olarak, herkes Wget çığlık attığından , Wget kullanmadan basit Wget işlevselliği istiyorum.


6
Daha fazla fikir "Windows'taki tek tarayıcı ölmüşse, Internet'e nasıl bağlanılır?" at superuser.com/questions/50427/…
Arjan

Ve bir düzine Windows XP sürümünden hangisi bu olurdu?
Arjan

Diyelim ki herhangi bir Windows XP SP2 sürümü ve daha sonra yayınlanacak her şey olabilir.
Robert Massa

@arjan İlginç bir soru, ancak hala kesin bir cevap yok.
Robert Massa

"Baskı" için sormalıydım. Başlangıç, Ev, Profesyonel, Medya Merkezi, Tablet, hatta belki Gömülü (orada araçlar için iyi bir değişiklik! Sanırım) ... Veya Windows Media Player olmadan Avrupa sürümleri. :-)
Arjan

Yanıtlar:


51

Bir VBScript yazıp komut satırından çalıştırabilirsiniz.

Bir dosya oluşturun downloadfile.vbsve aşağıdaki kod satırlarını ekleyin:

' Set your settings
    strFileURL = "http://www.it1.net/images/it1_logo2.jpg"
    strHDLocation = "c:\logo.jpg"

' Fetch the file
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    objXMLHTTP.open "GET", strFileURL, false
    objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0    'Set the stream position to the start

Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

Komut satırından aşağıdaki gibi çalıştırın:

cscript.exe downloadfile.vbs 

1
Bunun Internet Explorer’a dayanıp dayanmadığını merak ediyorum, ancak bunun “Windows’taki tek tarayıcı ölmüşse Internet’e nasıl bağlanılır?” İçin iyi bir cevap olacağını düşünüyorum. En superuser.com/questions/50427/... :-)
Arjan

cscript.exe iznine izin verilirse
hello_there_andy

Bu betiği Windows PE 5.1'de test ettiğimi ve bir çekicilik gibi çalıştığını onaylayabilirim . Çevrimdışı dağıtım için, USB sürücüdeki platform sürümünü sunucuda depolanan bir metin dosyasına karşı kontrol etmek için kullanmayı düşünüyorum.
Wayfarer

74

Windows 7 ile başlayarak, henüz söylenmemiş tek bir yöntem olduğuna inanıyorum:

Sözdizimi:

bitsadmin / transfer iş_adı        / indirme / öncelikli öncelik    URL'si   yerel \ yol \ dosya

Örnek:

bitsadmin / transfer mydownloadjob / indirme / öncelik normal
                  http://example.com/filename.zip C: \ Users \ kullanıcı adı \ Downloads \ dosyaadı.zip

( ^Okunabilmesi için iki ayrı satıra bölünmüştür (kaydırmayı önlemek için).)

Uyarı: Yorumlarda belirtildiği gibi, bitsadminyardım mesajı şöyle söyleyerek başlar:

BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows.
Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.

... ancak başka bir yorum, Windows 8'de çalıştığını bildirdi.


16
windows7'nin bir parçasıdır.
akira

3
Windows 7'de işe yaramadı ...
jyz

3
Bu, en çok oy alan cevap olmalıydı. bitsadmin olsa da, Windows powershell lehine itiraz edilmiştir.
lenkite

3
Win7 üzerinde çalışmayı onaylayın
kaiser

7
Not: BITSAdmin kullanımdan kaldırılmıştır ve gelecekteki Windows 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.
Ujjwal Singh

39

Windows 7, PowerShell'i içerir ve PowerShell ile yapamayacağınız hiçbir şey yoktur.

Windows PowerShell'de wget'e yerel alternatif mi?


16
(Yeni Nesne Net.WebClient) .DownloadFile ('someurl', 'somepath')
Jason Stangroome

3
Powershell , Powerrangers içindir ! Bu ne kadarol ve neden bu halttan haberim olmadı? Hoşçakalın cmd.
kaiser

16
cmd.exe: powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }". aynı zamanda run isteminde de çalışıyor
Janus Troelsen

1
Evet, güç kaynağı olmadan yapamayacağın hiçbir şey yok. Bu gerçek bir turing tarpit :)
jcarpenter2

PowerShell versiyonum @JanusTroelsen, "iwr" terimi bir cmdlet adı olarak tanınmıyor, "yanıtını verdi, ancak bazı benzer incelemelerden sonra bu işe yaradı:powershell -command "$clnt = new-object System.Net.WebClient; $clnt.DownloadFile(\"https://host/name\", \"outpufilename\")"
rogerdpack

25

PowerShell (Windows 8 ile birlikte gelir ve daha önceki sürümler için .NET ile birlikte gelir) bu özelliğe sahiptir. powershellKomut komut satırından veya bir gelen keyfi PowerShell komutları çalıştıran sağlar .batdosyası. Böylece, aşağıdaki satır ne istenirse:

powershell -command "& { (New-Object Net.WebClient).DownloadFile('http://example.com/', 'c:\somefile') }"

2
Bu soruya bir cevap vermiyor. Bir yazarın açıklamasını eleştirmek veya talep etmek için, yazdıklarının altında bir yorum bırakın; istediğiniz zaman kendi yazılarınıza yorum yapabilirsiniz ve yeterli saygınlık elde ettiğinizde , herhangi bir yayına yorum yazabilirsiniz .
harrymc

3
@harrymc bir cevap olduğuna eminim. bir dosyayı indirir. Daha fazla İstediğiniz ne?
Janus Troelsen

1
(1) Bu tek astarın ne yaptığını açıklayan bir metin, (2) Cevabınızın önceki bir cevaba alternatif bir formülasyon olmadığını doğrulayın, çünkü eğer öyleyse, en çok o cevabın yorumu olarak ifade edilmesi gerekir.
harrymc

Bunun çalışması için hangi Windows ve PowerShell sürümleri gerekiyor?
Peter Mortensen,

2
bu Windows Server 2012
FYI'de çalışmıyor

17

Bunu yapmanın bir yolunu buldum, ama gerçekten, sadece Wget'i kurun .

Internet Explorer'ı komut satırından (iexplore.exe) kullanabilir ve ardından bir URL'yi bağımsız değişken olarak girebilirsiniz. Öyleyse, koş:

iexplore.exe http://blah.com/filename.zip

Dosya ne olursa olsun, önceden onaylanması gerekmediğini belirtmeniz gerekir. Bakın ve bakın, otomatik olarak indirme işlemini gerçekleştirecektir. Yani evet, teknik olarak mümkün, ama iyi efendimiz bunu farklı şekilde yap.


Yanıtınız yakın bir özelliktir), ama yine de kullanıcı müdahalesi ( "Kaydet" tıklayarak, veya iletişim kutusunu) görüntülemek için değil yapılandırarak gerektirir ben wget çok daha iyi bir yoldur, sadece varsayımsal bir soru olduğunu biliyorum
Robert Massa

3
Dediğim gibi, bu dosya türüne kaydetme istemi seçeneğinin seçimini kaldırmanız gerekiyor. Örneğin, bir zip dosyası indirin, bu istemi devre dışı bırakın ve ileride komut satırından erişilen herhangi bir zip dosyası otomatik olarak kaydedilecektir.
DHayes

1
+1, bunun doğrulanmadığını belirtmeme rağmen (ancak son ifade çok doğrudur)
Arjan

1
"Sevgili lord bu şekilde yapma" için +1 ... ... :)
quixote

12

Windows Gezgini (Internet Explorer ile karıştırılmamalıdır) HTTP üzerinden dosya indirebilir. URL’yi Adres çubuğuna girmeniz yeterlidir. Veya komut satırından, örneğin C:\windows\explorer.exe http://somewhere.com/filename.ext.

Klasik Dosya İndirme istemini alırsınız . Dosya Windows Gezgini'nin satır içinde nasıl görüntüleneceğini bildiği bir tür olmadığı sürece (.html, .jpg, .gif), bu durumda kaydetmek için sağ tıklatmanız gerekir.

Bunu, henüz Windows XP 2002 SP1’in bakir bir kurulumunun VMware görüntüsü üzerinde test ettim ve iyi çalışıyor.


4
bu kullanıcı etkileşimi gerektirir. Komut isteminden bir dosya indirmek isteyen çoğu insanın istediği muhtemelen değil
Kip

Günümüzde, varsayılan tarayıcınıza bağlıdır. Mine krom ve bilinen bir yere otomatik olarak indiriliyor, bu yüzden bu çözümü ihtiyaçlarım için yeterli buluyorum. Teşekkür!
kayleeFrye_onDeck

7

Kullanabilirsiniz (standart bir Windows yarasasında):

powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }"

PowerShell v4 gerektiriyor ...

( Bu yorum ve bu teşekkürler )


6

FTP'yi kullanın.

Komut satırından:

ftp ftp.somesite.com
user
password

vb. FTP hatırlayabildiğim her Windows sürümünde bulunur; Muhtemelen 3.1’de değil, belki Windows 95’te de değil , ama bundan sonra kesinlikle her şeyde.

@RM: Başka bir araç indirmek istemiyorsanız zor olacak. Wget for Windows için bir komut satırı var ve Wget tam olarak ne istiyorsan onu yapacak şekilde tasarlandı.


+1 iyi cevap. ftp, indirmeye çalıştığınız sunucu tarafından desteklendiği sürece oldukça evrenseldir.
DaveParillo

Teşekkürler, üzgünüm daha spesifik değildim, HTTP kullanmak istemiştim.
Robert Massa

1
Pasif mod bu Windows ftp istemcisi tarafından desteklenmediği için çoğu FTP sunucusuyla çalışmaz (pasif moddaki NAT'lar gerekli).
Peter Mortensen,

@PeterMortensen Ayrıca, wget işlevselliği aradığını belirtmek için düzenlediği için soruyu uzaktan yanıtlamıyor. Fakat bunun sadece 7 yaşında bir yanlış cevap vermesini engellemesine izin verme.
Satanicpuppy

4

PowerShell'i şu şekilde kullanın:

  1. Bir download.ps1 dosyası oluşturun:

    param($url, $filename)
    $client = new-object System.Net.WebClient 
    $client.DownloadFile( $url, $filename)
    
  2. Şimdi böyle bir dosyayı indirebilirsiniz:

    powershell Set-ExecutionPolicy Unrestricted
    powershell -ExecutionPolicy RemoteSigned -File "download.ps1" "http://somewhere.com/filename.ext" "d:\filename.ext"
    

Bu, Windows XP 64-bit, PowerShell 2.0'da bile çalışır.
Peter Mortensen

1

Telnet'i yüklerseniz, bir dosyayı indirmek için sunucuya bir HTTP isteği yapabileceğinizi hayal ediyorum.

Ayrıca Cygwin'i yükleyebilir ve ayrıca bir dosyayı indirmek için wget kullanabilirsiniz . Bu, dosyaları komut satırından indirmenin çok kolay bir yoludur.


2
Eminim 'cygwin' standart dışı bir yardımcı program olarak sayılır ;-)
DaveParillo

Telnet ilginç bir seçenektir, çıktıyı bir dosyaya bozmadan dönüştürmenin bir yolu var mı? Ve istek yapmak için HTTP GET komutunu telnet'e aktarabilir miyiz?
Robert Massa

Telnet yükleyin? Telnet ftp gibidir; pencerelerle birlikte geliyor. Çıktıyı yönlendirmeyi bilmiyorum ama.
Satanicpuppy

XP için (söz konusu olan gibi) telnet varsayılan olarak kurulur, ancak Vista'da artık böyle olmadığını duydum? Ancak hayır, hepsi tek bir HTTP yanıtında döndürülmedikçe dosya indirmelerine izin vermez ve biri başlıkları sorabilir ve komut satırındaki öğelerin kodunu çözebilir. Oldukça muhtemel olmayan biri bunu kontrol edebilir.
Arjan

1
Neden sadece wget kullanmak için cygwin'i kurmalısınız? Yerel bir win32 ikili var.
sabah

1

Windows'ta komut satırını kullanarak indirebileceğiniz birkaç yol vardır:

  1. Cygwin'i kullanabilirsiniz .

    Not: dahil olan uygulamalar yerel Linux uygulamaları değildir. Windows'ta çalıştırmak istiyorsanız, uygulamanızı kaynağından yeniden oluşturmanız gerekir.

  2. Telnet'i kullanarak bir istek yapmak mümkündür ancak herhangi bir işlem göremezsiniz.

  3. Yarasa veya VBS komut dosyaları yazabilirsiniz.

  4. Cmd.exe'den çalıştırabileceğiniz kendi programınızı yazın.


1

Linux uygulamasını Wget’a Windows’tan yükleyebilirsiniz. Http://gnuwin32.sourceforge.net/packages/wget.htm adresinden indirilebilir . Ardından 'wget (inserturlhere)' komutunu veya komut isteminizde başka bir URL yayınlayabilirsiniz ve bu URL'yi / dosyayı / resmi indirmenize izin verecektir.


1
Garip bir şekilde bu sürüm her zaman uyumlu değildir. Windows 7 bilgisayarımda kütüphanelerin eksik olması değildi. Wget'i çoğu zaman fazladan kütüphaneler olmadan kullanmak istersiniz. users.ugent.be/~bpuype/wget
sinni800


0

Varsayılan Windows'ta, HTTP ile indiremezsiniz. Windows bir GUI merkezli bir işletim sistemidir, dolayısıyla diğer işletim sistemlerinde bulacağınız birçok komut satırı aracından yoksundur wget, ki bu da ana aday olacaktır.

System.Net.WebClient.DownloadFile()WiniNetAPI’daki bir işlev dosyaları indirebilir, ancak toplu iş dosyasıyla karşılaştırıldığında gerçek bir geliştirmeye ne kadar ulaştığınızdan emin değilim.


Wget kullanarak bunun mümkün olduğunu biliyorum, ancak benim sorum standart olmayan Windows araçlarını kullanmadan belirtiyor.
Robert Massa

0

Eğer yüklü python varsa, burada get-pip.py dosyasını web'den alan bir örnek

python -c "import urllib; urllib.urlretrieve ('https://bootstrap.pypa.io/get-pip.py', r'C:\python27\Tools\get-pip.py')"
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.