Unduh file melalui HTTP dari skrip di Windows

19

Saya ingin cara untuk mengunduh file melalui HTTP yang diberikan URL-nya (mirip dengan cara kerja wget). Saya telah melihat jawaban untuk pertanyaan ini , tetapi saya memiliki dua perubahan pada persyaratan:

  • Saya ingin dijalankan di Windows 7 atau lebih baru (meskipun jika itu bekerja pada Windows XP, itu bonus).
  • Saya harus bisa melakukan ini pada mesin stok dengan apa pun kecuali skrip, yang harus berupa teks yang dapat dengan mudah dimasukkan pada keyboard atau menyalin / menempel.
  • Semakin pendek, semakin baik.

Jadi, pada dasarnya, saya ingin skrip .cmd (batch), VBScript , atau skrip PowerShell yang dapat menyelesaikan pengunduhan. Itu bisa menggunakan COM atau memanggil Internet Explorer, tetapi perlu dijalankan tanpa input apa pun, dan harus berperilaku baik ketika dipanggil tanpa tampilan (seperti melalui sesi Telnet ).

Jason R. Coombs
sumber
dload v1.0 alat baris perintah win32 seperti wget superuser.com/a/833445/384998
seizu
Bukan duplikat karena pertanyaan ini secara khusus mencari sesuatu yang akan berjalan pada mesin stok (tanpa perangkat lunak tambahan, seperti wget untuk Windows).
Jason R. Coombs
@ JasonR.Coombs Jawaban yang diterima sama dengan salah satu jawaban dalam pertanyaan itu, jadi pembaca yang akan datang tidak mendapat apa-apa lagi.
Franklin Yu
Saya setuju; pada titik ini, pertanyaan yang lebih umum menggantikan yang ini.
Jason R. Coombs

Jawaban:

16

Jika Anda memiliki PowerShell> = 3.0, Anda dapat menggunakan Invoke-WebRequest :

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

Atau bermain golf:

iwr -outf su.htm superuser.com
Steven Penny
sumber
2
Satu-liner dari cmd prompt biasa:powershell -command "iwr -outf su.htm superuser.com"
valiano
14

Saya akan menggunakan BITS ( primer ):

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.

Dimulai dengan Windows 7, Microsoft menyarankan untuk menggunakan cmdlet PowerShell untuk BITS.

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

Anda juga dapat menggunakan BITS melalui COM , lihat di sini untuk contoh VBScript . Dan ada ' bitsadmin ', alat baris perintah untuk mengontrol unduhan:

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

Di Windows 7 bitsadmin.exemenyatakan sendiri bahwa itu adalah alat yang usang. Namun:

% bitsadmin.exe /transfer "NAME" http://path/to/file C:\Path\for\local\file
akira
sumber
2
Tampaknya bitadmin sudah usang dan mungkin tidak dimasukkan dalam versi Windows mendatang.
Jason R. Coombs
@ JasonR.Coombs: tautan? referensi?
akira
2
technet.microsoft.com/en-us/magazine/ff382721.aspx ... jadi, alih-alih "bitadmin.exe", orang hanya menggunakan bit-cmdlets.
akira
1
Terima kasih untuk itu. Yang harus saya lakukan hanyalah bitsadmin yang mengatakan kepada saya bahwa itu sudah usang ketika saya menjalankannya.
Jason R. Coombs
Perhatikan bahwa jalur keluar harus sepenuhnya memenuhi syarat dan tidak relatif (hat tip superuser.com/questions/365755/… )
matt wilkie
7

Coba kelas Klien Web . Ada contoh skrip PowerShell di bagian bawah halaman ini :

$c = new-object system.net.WebClient
$r = new-object system.io.StreamReader $c.OpenRead("http://superuser.com")
echo $r.ReadToEnd()
Charles Gargent
sumber
2
Ini sangat membantu. Saya menemukan WebClient juga memiliki metode DownloadFile, yang akan mengunduh konten langsung ke file. Terima kasih.
Jason R. Coombs
3

Salin dan tempel enam baris berikut (atau hanya empat baris terakhir) ke dalam file teks. Kemudian ganti nama menjadi 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

Jelas Anda perlu menyesuaikan tiga hal dalam skrip ini untuk membuatnya bekerja untuk Anda.

  1. Bagian yang bertuliskan " http://www.exampleURL.com/FILE.TXT ". Anda harus mengganti URL yang benar untuk file yang ingin Anda unduh.
  2. Perintah yang akan Anda jalankan di baris perintah untuk menjalankan skrip ini; perlu menentukan nama yang benar untuk skrip vget.vbs,, jika itu yang Anda sebut.
  3. Dan nama FILE.TXTyang Anda inginkan untuk diarahkan oleh baris perintah batch DOS .

Saya hanya mencoba menggunakan ini untuk mengunduh file teks ASCII mentah (skrip cmd yang lebih kuat) dari akun Dropbox saya , jadi saya tidak tahu apakah itu akan berfungsi untuk file EXE, dll .; atau dari server web lain.

Jika Anda membuang dua baris komentar pertama, panjangnya hanya empat baris. Jika Anda tahu cara menggunakan VBScript, Anda mungkin dapat membawa kode ini di kepala Anda, dan mengetiknya di baris perintah sesuai kebutuhan. Ini hanya berisi lima komponen perintah kunci: CreateObject, .Open, .Send, WScript.Echodan .responseText.

ozidroid
sumber