Windows'daki bir komut dosyasından HTTP aracılığıyla dosya indirme


19

URL (wget nasıl çalışır) benzer verilen bir dosya HTTP üzerinden indirmek için bir yol istiyorum. Bu sorunun cevaplarını gördüm , ancak gereksinimlerde iki değişiklik var:

  • Windows 7 veya sonraki sürümlerde çalışmasını istiyorum (Windows XP'de çalışıyorsa, bu bir bonus).
  • Ben bir klavyede kolayca bir klavyeye girilebilir veya kopyala / yapıştırılabilir metin olmalı komut dosyası, başka bir şey ile bunu yapabilmek gerekir.
  • Ne kadar kısa, o kadar iyi.

Yani, aslında, indirme işlemini gerçekleştirebilen bir .cmd (toplu iş) komut dosyası, VBScript veya PowerShell komut dosyası istiyorum. COM kullanabilir veya Internet Explorer'ı çağırabilir, ancak herhangi bir girdi olmadan çalışması gerekir ve ekran olmadan çağrıldığında ( Telnet oturumu gibi) iyi davranmalıdır .


dload v1.0 wget gibi bir win32 komut satırı aracı superuser.com/a/833445/384998
seizu


Bu soru özellikle bir stok makinesinde (Windows için wget gibi ek yazılımlar olmadan) çalışacak bir şey aradığı için kopya değil.
Jason R. Coombs

@ JasonR.Coombs Kabul edilen cevap, bu sorudaki cevaplardan biriyle aynıdır, bu nedenle gelecekteki okuyucu daha fazla bir şey almaz.
Franklin Yu

Katılıyorum; bu noktada, daha genel olan soru bu sorunun yerini alır.
Jason R. Coombs

Yanıtlar:


16

PowerShell> = 3.0 sürümüne sahipseniz, Invoke-WebRequest kullanabilirsiniz :

Invoke-WebRequest -OutFile su.htm -Uri superuser.com

Veya golf:

iwr -outf su.htm superuser.com

2
Düzenli cmd isteminden tek astar:powershell -command "iwr -outf su.htm superuser.com"
valiano

14

Ben kullanacağı BITS'i ( astar ):

Background Intelligent Transfer Service (BITS) is a component of modern
Microsoft Windows operating systems that facilitates prioritized,
throttled, and asynchronous transfer of files between machines using
idle network bandwidth.

Windows 7'den başlayarak Microsoft , BITS için PowerShell cmdlet'lerini kullanmanızı önerir .

% import-module bitstransfer
% Start-BitsTransfer http://path/to/file C:\Path\for\local\file

COM aracılığıyla BITS de kullanabilirsiniz , örnek bir VBScript için buraya bakın . Ve indirmeleri kontrol etmek için bir komut satırı aracı olan ' bitsadmin ' var :

BITSAdmin is a command-line tool that you can use to create download or
upload jobs and monitor their progress.

Windows 7'de bitsadmin.exekullanımdan kaldırılmış bir araç olduğunu belirtir. Yine:

% bitsadmin.exe /transfer "NAME" http://path/to/file C:\Path\for\local\file

2
Şimdi bitsadmin kullanımdan kaldırılmış gibi görünüyor ve Windows'un gelecekteki sürümlerinde bulunmayabilir.
Jason R. Coombs

@ JasonR.Coombs: bağlantı? referans?
akira

2
technet.microsoft.com/tr-tr/magazine/ff382721.aspx ... yani "bitadmin.exe" yerine sadece bit-cmdlet'leri kullanır.
akira

1
bunun için teşekkürler. Gitmem gereken tek şey bitsadmin, koştuğumda kullanımdan kaldırıldığını söyledi.
Jason R. Coombs

dış yolun tamamen nitelikli ve göreceli olmamalıdır (hat ucu superuser.com/questions/365755/… )
matt wilkie

7

Web İstemcisi sınıfını deneyin . Bu sayfanın altında örnek bir PowerShell betiği vardır :

$c = new-object system.net.WebClient
$r = new-object system.io.StreamReader $c.OpenRead("http://superuser.com")
echo $r.ReadToEnd()

2
Bu yardımcı olur. WebClient ayrıca içeriği doğrudan bir dosyaya indirecek bir DownloadFile yöntemine sahip buldum. Teşekkürler.
Jason R.Combs

3

Aşağıdaki altı satırı (veya yalnızca son dört satırı) kopyalayıp bir metin dosyasına yapıştırın. Sonra yeniden adlandırın vget.vbs.

'cscript vget.vbs >FILE.TXT
'Run this vbscript at command line. Use above syntax to download/create FILE.TXT
Set oX = CreateObject("Microsoft.XmlHTTP")
oX.Open "GET", "http://www.exampleURL.com/FILE.TXT", False
oX.Send ""
WScript.Echo oX.responseText

Açıkçası, bu komut dosyasında sizin için çalışması için üç şeyi özelleştirmeniz gerekir.

  1. " Http://www.exampleURL.com/FILE.TXT " yazan bölüm . İndirmek istediğiniz dosya için doğru URL'yi değiştirmeniz gerekecektir.
  2. Bu komut dosyasını yürütmek için komut satırında çalıştıracağınız komut; komut dosyası için doğru adı belirtmeniz vget.vbsgerekir.
  3. Ve FILE.TXTçıktının bir DOS toplu iş komut satırı tarafından yönlendirilmesini istediğiniz ad .

Ben sadece benim Dropbox hesabımdan bir ham ASCII metin dosyasını (daha güçlü bir cmd komut dosyası) indirmek için kullanmayı denedim , bu yüzden EXE dosyaları, vb için çalışacak mı bilmiyorum; veya diğer web sunucularından.

İlk iki yorum satırından vazgeçerseniz, bu satır yalnızca dört satır uzunluğundadır. VBScript'te yolunuzu biliyorsanız, bu kodu kafanızda bile taşıyabilir ve gerektiğinde komut satırına yazabilirsiniz. Sadece beş anahtar komut bileşenleri içerir: CreateObject, .Open, .Send, WScript.Echove .responseText.


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.