Як завантажувати файли з командного рядка у Windows як wget або curl


302

Як я можу завантажити що-небудь з Інтернету безпосередньо без Internet Explorer або Firefox відкриття Acrobat Reader / Quicktime / MS Word / що-небудь?

Я використовую Windows, тому Windows версію Wget зробив би.


Просто клацніть правою кнопкою миші на файлі та натиснувши кнопку "Зберегти ціль як" або "Зберегти посилання як" або "Зберегти як" (мова залежить від вашого браузера).
BrainSlugs83

21
Суть того, що команда має можливість писати пакетний файл і запускати його (можливо, заплановано як завдання) в будь-який час. Саме там графічний інтерфейс відсутній.
Jbm

3
Як завантажити з MS Word?
Jaime Hablutzel

5
@JaimeHablutzel Чому ви хочете завантажити щось через MS Word? MS Word не є терміналом.
Braden Best

1
@SDsolar Або просто підвищити / покращити це відповідь нижче.
Franklin Yu

Відповіді:


166

Wget для Windows повинні працювати.

Від Wget Wiki FAQ :

GNU Wget - це безкоштовна утиліта для отримання файлів зі світу   Wide Web використовує HTTP і FTP, два найбільш широко використовуваних Інтернету   протоколів. Вона працює неінтерактивно, що дозволяє працювати в   після виходу з системи.

Від цей розділ FAQ , пропонуються посилання для завантаження:

Windows Binaries

Замість цього використовується посилання з ввічливості Jernej Simončič.


8
Там також Winwget cybershade.us/winwget якщо ви віддаєте перевагу gui
Col

12
Автономна версія завантажується з це посилання .
Vito Gentile

4
Новіші, навіть актуальні (на сьогоднішній день) Windows будує , наданий Jernej Simončič
Gras Double

1
@cixelsyd Оновлено посилання на альтернативне джерело.
clearkimura

1
eternallybored.org/misc/wget/ позначено антивірусом підприємства в моїй системі. Чорний / бітовий 9. Напевно помилковий. Але sourceforge один працює. Не підтримує sslv3.
TamusJRoyce

286

Альтернатива, яку я нещодавно виявив, використовуючи PowerShell:

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

Він також працює з запитами GET.

Якщо вам потрібно вказати облікові дані для завантаження файлу, додайте наступний рядок між:

$client.Credentials =  Get-Credential                

Відобразиться стандартне вікно облікових даних вікна. Введені вами облікові дані використовуватимуться для завантаження файлу. Це потрібно зробити лише один раз на весь час, коли ви будете використовувати об'єкт $ client.


82
Ви також можете зробити це в одному рядку: (new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt','C:\tmp\file.txt')
schellack

16
@Rob Powerhell вбудований у Windows ...
nhinkle

8
З Vista вгору, так.
Arran

3
@ BrainSlugs83, абсолютно, але багато хто багато , люди все ще використовують XP. Це просто що треба мати на увазі.
Arran

4
@ BrainSlugs83, ви недооцінюєте кількість людей, які все ще перебувають у старих системах Windows. Я не розумію питання, я вказав, що це тільки на Vista вгору. Люди можуть ігнорувати це, або сказати "ей спасибі!", Але ви ....? Якщо у вас є проблеми, створіть чат і ми можемо розмовляти. Хтось з репутацією (як ви) повинен розуміти тут це не місце для цього обговорення.
Arran

67

Якщо у вас є PowerShell & gt; = 3.0, можна використовувати Invoke-WebRequest

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

Або гольф

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

Завантажте файл за допомогою HTTP у Windows


Це не працює з перенаправленнями на sourceforge (і, можливо, на інші сайти), на відміну від System.Net.WebClient. Однак ви можете зробити Invoke-WebRequest працювати, додаючи -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox.
Ela782

Чи є можливість переглядати хід завантаження?
Franklin Yu

@FranklinYu прогрес буде показувати, якщо файл досить великий
Steven Penny

47

Windows має власну утиліту завантаження командного рядка - BITSAdmin :

BITSAdmin - це інструмент командного рядка, який можна використовувати для створення завантаження   або завантажувати робочі місця та стежити за їхнім прогресом.

EDIT : 26.01.15 - Ось мій огляд того, як файл можна завантажити на вікна без зовнішніх інструментів

І повний приклад bitsadmin:

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

Редагувати : 15.05.2018 - виявилося, що можна завантажити a файл з certutil теж :

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

Certutil не встановлений за замовчуванням на XP / Win2003, але доступний на нових версіях Windows.For XP / 2003 вам знадобиться Пакет інструментів адміністратора для Windows Server 2003


7
Цікаво. Це один незграбний програмний продукт порівняно з wget.
Matt H

2
Зверніть увагу, що він не постачається з Windows XP, і, можливо, не з іншими версіями.
Ian Dunn

12
Оновлення: BITSAdmin застаріло та не гарантовано буде доступним у наступних версіях Windows. Адміністративні інструменти для служби BITS тепер надаються командлетами BITS PowerShell.
nulldev07

1
@MattH: тому що це не повинно бути wget в першу чергу? - подивитися en.wikipedia.org/wiki/Background_Intelligent_Transfer_Service
peterchen

4
Неможливо додати файл - 0x80070057
Tomáš Zato

29

Збережіть наступний текст як wget.js і просто зателефонуйте

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

Це код:

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

Якою мовою є цей скрипт? Я хотів би знайти додаткову довідкову документацію. Не схожий на vb
G-.

1
Корисно для окремих файлів. Потрібно покращити рекурсивне завантаження та https.
opticyclic

4
@ G-. Я спізнююся на вечірку, але це JavaScript.
prooffreader

Я намагався це зробити database.clamav.net/daily.cvd , але завантажено лише 88 кб 44 МБ :(
kokbira

19

Я зробив швидкий файл myGet.bat, який викликає описаний вище метод PowerShell.

@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

Я запозичив деякий код з Розбір URL-адреси для назви файлу з пробілом .


1
чому downvote? це мені здається нормальним і є прямим відповіддю на це питання. Так, це незграбний і може використовувати поліпшення, як уникнення амперсанду (& amp;) у url, але він працює як є.
matt wilkie

17

Існує рідний cURL для Windows тут . Є багато ароматів - з підтримкою SSL та без них.

Вам не потрібен додатковий багаж Cygwin і любить, тільки один невеликий EXE-файл.


Також важливо знати, що є обидва wget і curl Псевдоніми, вбудовані в усі сучасні версії Windows Powershell. Вони еквівалентні.

Для отримання не потрібно додаткових файлів або завантажень wget функціональність:

Використання Curl In Powershell (Суспільний Geek)

Витяг:

Ви можете ввести команду cURL, подібну до тієї, яка завантажує файл з   Репозитарій GitHub.

завивати http://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json

і це буде здаватися, що він працює, але те, що він насправді робить це просто   використання cURL як псевдоніма. У вищенаведеному випадку, що станеться   що ви просто отримаєте заголовки замість самого файлу.

Псевдоніми в PowerShell дозволяють створювати ярлики для більш довгих команд, так що вам не доведеться вводити їх весь час.

Якщо ви введете команду Get-Alias, вона надасть вам список всіх псевдонімів, які використовуються в PowerShell. Як ви можете бачити, команда curl просто викликає команду Invoke-WebRequest. Вони подібні, але не однакові, тому наведений запит не працює для нас.

enter image description here

Для того, щоб це працювало належним чином у PowerShell, найпростішим способом є використання змінних і -OutFile аргумент, як показано тут:

enter image description here

(ім'я файлу відсічене на зображенні “ https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ”)

Цей синтаксис завантажить повний вміст цільового файлу azuredeploy.json до локального файлу newfile.json


Основна перевага полягає в тому, що вона вбудована в Powershell, тому цей код буде виконуватися безпосередньо без завантаження або будь-яких інших додаткових файлів, необхідних для того, щоб працювати з будь-якою сучасною версією Windows.


Це робиться безпосередньо на одній лінії, але лінія стає досить довгою і не може бути легко прочитана з першого погляду.
SDsolar

8

Я шукав те ж саме, і, оскільки я не мав права встановлювати будь-який з вищевказаних пакетів, я пішов на невеликий обхідний шлях (для завантаження 30 файлів)

  • Я створив пакетний файл
  • Перераховані всі файли
  • Покласти firefox.exe на початку кожного рядка
  • Перейшов до каталогу Firefox Program Files
  • Пробіг.

3

Якщо PowerShell це варіант, який є бажаним маршрутом, оскільки вам (можливо, не доведеться встановлювати нічого додаткового):

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

Якщо це не вдасться, Wget для Windows, як вказують інші, безумовно, є другим кращим варіантом. Як викладено в іншій відповіді, це виглядає як ви можете завантажити Wget все само по собі , або ви можете захопити його як частину Cygwin або MSys .

Якщо з якихось причин ви опинитеся застряглими в часі, використовуючи машину, яка не має PowerShell і Ви маєте нульовий доступ до робочого веб-переглядача (тобто Internet Explorer є єдиним веб-переглядачем у системі, а його налаштування пошкоджено), а файл знаходиться на FTP-сайті (на відміну від HTTP):

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

Якщо пам'ять обслуговується, вона існує з часів Windows 98, і я можу підтвердити, що вона все ще існує в Windows 8 RTM (можливо, вам доведеться йти в appwiz.cpl і додавати / видаляти функції, щоб отримати). Ця утиліта може завантажувати й завантажувати файли з / до FTP-сайтів в Інтернеті. Він також може бути використаний у сценаріях для автоматизації будь-якої операції.

Цей вбудований інструмент був реальним заощадженням для мене в минулому, особливо в дні ftp.cdrom.com - я завантажив Firefox таким чином один раз, на повністю розбиту машину, яка мала лише комутований Інтернет з'єднання (назад, коли максимальний розмір пакету sneakernet був ще 1,44 Мб, а Firefox все ще називався "Netscape" / me робить trollface ).

Кілька порад: це власний командний процесор, і він має свій власний синтаксис. Спробуйте ввести "help". Усі сайти FTP вимагають ім'я користувача та пароль; але якщо вони дозволяють "анонімним" користувачам, ім'я користувача є "анонімним", а пароль є вашою адресою електронної пошти (ви можете зробити це, якщо ви не хочете відстежувати, але зазвичай є якась логіка, щоб переконатися, що дійсну адресу електронної пошти).


+1 для мислення командного рядка ftp! Однак wget і powershell обидва були згадані задовго до того, як ви приєдналися до партії, тому -1 там. : - / /
matt wilkie

Інші відповіді, які я бачив, були всіма лайнерами та / або мали деякий запах коду для них - це короткий та підсилювач; простий один лайнер для завантаження файлу. - Також я хотів дати відповідь, що охоплювала всі бази. :-)
BrainSlugs83

Я не впевнений, чому у файлі призначення є два запитання C:\tmp\file.tx??t
Ploni



1

Ви можете отримати WGet для Windows тут . Крім того, ви можете клацнути правою кнопкою миші на посилання для завантаження елемента, який ви хочете завантажити, і виберіть "Зберегти як". Це завантажить файл і не відкриє його у призначеному додатку.


1

Якщо ви хочете графічний інтерфейс, то спробуйте VisualWget , що насправді є чистим і повною функцією. Він заснований на GNU Wget для його завантаження.

EDIT: оновлена ​​посилання.


1
ось оновлене посилання: sites.google.com/site/visualwget/… (завантаження здійснюється внизу сторінки, використовуйте маленькі стрілки праворуч)
Reed Hedges

1

Ви також можете використовувати wget упаковано в PowerShell . ^) Щоб відкрити, натисніть клавішу Windows і введіть "powershell" або Windows-R і введіть "powershell" і натисніть кнопку return.

Інсталяція не потрібна.

Одна цікава відмінність від звичайної wget (більше на що посилання ): Ви не можете просто скористатися файлом більшим, ніж трубою. wget в PowerShell - це просто зручна обгортка для Invoke-WebRequest, і ви повинні використовувати його синтаксис для запису у файл.

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

1
-OutFile зробив роботу!
Dimitry K

1

Я думаю, що встановлення wget Через Chocolatey це найпростіший спосіб.

  1. Встановіть Шоколад
  2. У командному рядку введіть: choco install wget
  3. Потім можна використовувати wget з командного рядка, подібно до систем * nix.

0

Як задокументовано в цьому Відповідь SU у PowerShell можна використовувати наступне:

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

-1

Альтернативою використання gnuwin32 є unxutils яка включає wget.


можна керувати за допомогою unxutils, але він старий, він використовує стару версію wget. gnuwin32 це те, що потрібно використовувати. Не зовсім так зручно встановлювати і не так легко знайти речі, але воно має набагато більше, ніж і unxutils.
barlop

-3

Якщо вам потрібно візуальний Публікація для Windows тут є один.
Ви можете розміщувати дані або файли з ним.

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