Завантажте файл через HTTP зі сценарію в Windows


19

Я хочу, щоб завантажити файл через HTTP з урахуванням його URL-адреси (подібно до того, як працює wget). Я бачив відповіді на це питання , але в мене є дві зміни вимог:

  • Я хотів би, щоб він працював у Windows 7 або новіших версіях (хоча якщо він працює на Windows XP, це бонус).
  • Мені потрібно вміти робити це на біржовій машині, окрім сценарію, який повинен бути текстом, який можна легко вводити на клавіатурі або копіювати / вставляти.
  • Чим коротше, тим краще.

Отже, по суті, я хотів би .cmd (пакетний) сценарій, VBScript або PowerShell сценарій, який може завершити завантаження. Він може використовувати COM або викликати Internet Explorer, але він повинен працювати без будь-якого введення, і він повинен вести себе добре, коли викликається без дисплея (наприклад, через сеанс Telnet ).


dload v1.0 win32 інструмент командного рядка, наприклад wget superuser.com/a/833445/384998
seizu


Не дублікат, оскільки це питання спеціально шукає те, що буде працювати на фондовій машині (без додаткового програмного забезпечення, наприклад wget для Windows).
Джейсон Р. Кумбс

@ JasonR.Coombs Прийнята відповідь така сама, як одна з відповідей у ​​цьому питанні, тому майбутній читач більше нічого не отримує.
Франклін Ю

Я згоден; на даний момент більш загальне питання замінює це.
Джейсон Р. Кумбс

Відповіді:



14

Я б використовував BITS ( праймер ):

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, Microsoft радить використовувати командлети PowerShell для BITS.

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

Ви також можете використовувати BITS через COM , дивіться тут приклад VBScript . І є " bitsadmin ", інструмент командного рядка для управління завантаженнями:

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

У Windows 7 bitsadmin.exeзаявляє, що це застарілий інструмент. Тим не менш:

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

2
Здається, що bitsadmin застарілий і може не включатись у майбутні версії Windows.
Джейсон Р. Кумбс

@ JasonR.Coombs: посилання? довідник?
акіра

2
technet.microsoft.com/en-us/magazine/ff382721.aspx ... тож замість "bitadmin.exe" використовується лише біт-командлети.
акіра

1
Дякую за це. Все, що мені потрібно було продовжувати, - це бітсадмін, який казав мені, що він застарів, коли я керував ним.
Джейсон Р. Кумбс

зауважте, що вихідний шлях повинен бути повністю кваліфікованим, а не відносним (hat tip superuser.com/questions/365755/… )
matt wilkie

7

Спробуйте клас веб-клієнта . Внизу цієї сторінки є зразок сценарію PowerShell :

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

2
Це корисно. Я виявив, що WebClient також має метод DownloadFile, який завантажує вміст безпосередньо у файл. Спасибі.
Джейсон Р. Кумбс

3

Скопіюйте та вставте наступні шість рядків (або лише останні чотири рядки) у текстовий файл. Потім перейменуйте його на 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

Очевидно, вам потрібно налаштувати три речі в цьому сценарії, щоб він працював для вас.

  1. Частина, в якій написано " http://www.exampleURL.com/FILE.TXT ". Вам потрібно буде замінити правильну URL-адресу для файлу, який ви хочете завантажити.
  2. Команда, яку ви запустите в командному рядку для виконання цього сценарію; потрібно буде вказати правильну назву сценарію vget.vbs, якщо саме так ви його назвали.
  3. І ім'я, на FILE.TXTяке ви хочете, щоб результат був спрямований командним рядком DOS- пакетного пакету.

Я намагався використовувати це лише для завантаження сирого текстового файлу ASCII (більш потужний сценарій cmd) з мого облікового запису Dropbox , тому я не знаю, чи буде він працювати для файлів EXE тощо; або від інших веб-серверів.

Якщо ви відмовитеся від перших двох рядків коментарів, це лише чотири рядки. Якщо ви знаєте свій шлях навколо VBScript , можливо, вам навіть вдасться перенести цей код у себе в голові та ввести його в командному рядку за потребою. Він містить тільки п'ять ключових компонентів команди: CreateObject, .Open, .Send, WScript.Echoі .responseText.


1

Ось моя спроба відновити способи завантаження файлів у Windows без використання зовнішніх інструментів.

Він включає BITSADMIN, Microsoft.XmlHTTP та WinHTTP з гібридним пакетним / JScript- скриптом, якому не потрібні тимчасові файли, та System.Net.WebClinet з гібридом самостійно складеного jscript.net.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.