it-swarm.xyz

Как скачать файлы из командной строки в Windows, такие как wget или curl

Как я могу загрузить что-то из Интернета напрямую, не открывая Internet Explorer или Firefox Acrobat Reader/Quicktime/MS Word/что угодно?

Я использую Windows, поэтому подойдет версия Wget для Windows.

324
Paolo Tedesco

Wget для Windows должен работать.

Из Wget Wiki FAQ :

GNU Wget - это бесплатная сетевая утилита для извлечения файлов из World Wide Web с использованием HTTP и FTP, двух наиболее широко используемых интернет-протоколов. Он работает не в интерактивном режиме, что позволяет работать в фоновом режиме после выхода из системы.

Из этого раздела FAQ , предлагаются ссылки для скачивания:

Windows Binaries

Ссылка с любезности Jernej Simončič используется вместо этого.

171
Tony

Альтернатива, которую я недавно обнаружил, используя PowerShell:

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

Это работает также с запросами GET.

Если вам нужно указать учетные данные для загрузки файла, добавьте следующую строку между ними:

$client.Credentials =  Get-Credential                

Появится стандартная подсказка учетных данных Windows. Учетные данные, которые вы введете, будут использоваться для загрузки файла. Вам нужно сделать это только один раз за все время использования объекта $ client.

296
Paolo Tedesco

Если у вас PowerShell> = 3.0, вы можете использовать Invoke-WebRequest

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

Или в гольф

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

Скачать файл через HTTP в Windows

76
Steven Penny

Windows имеет собственную утилиту загрузки из командной строки - BITSAdmin :

BITSAdmin - это инструмент командной строки, который вы можете использовать для создания заданий загрузки или выгрузки и отслеживания их выполнения.

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

И полный пример битсадмина:

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

Редактировать : 15.05.2018 - оказалось, что можно также загрузить файл с certutil :

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

Certutil не устанавливается по умолчанию в XP/Win2003, но доступен в более новых версиях Windows. Для XP/2003 вам понадобится Admin Tool Pack для Windows Server 2003

52
npocmaka

Сохраните следующий текст как 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");
*/
30
user190042

Существует собственный cURL для Windows здесь . Доступно много вариантов - с поддержкой SSL и без нее.

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


Также важно знать, что псевдонимы wget и curl встроены во все современные версии Windows Powershell. Они эквивалентны.

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

Использование Curl In Powershell (Общительный выродок)

Выдержка:

Вы можете ввести команду cURL, например, которая загружает файл из репозитория GitHub.

curl 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.

20
Gaurav Kumar

Я сделал быстрый файл 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 для имени файла с пробелом.

19
MartinC

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

  • Я создал командный файл
  • Перечислены все файлы
  • Поставьте firefox.exe в начале каждой строки
  • Зашел в каталог firefox в Program Files
  • Запустил это.
8
Jesse P Francis

Cygwin имеет Wget (и многие другие утилиты).

3
Rich Homolka

Если 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 ).

Пара советов: это собственный командный процессор и собственный синтаксис. Попробуйте набрать «помощь». Все FTP-сайты требуют имя пользователя и пароль; но если они разрешают «анонимных» пользователей, имя пользователя «анонимный», а пароль - ваш адрес электронной почты (вы можете создать его, если не хотите, чтобы его отслеживали, но обычно есть какая-то логика, чтобы убедиться, что это действительный адрес электронной почты).

3
BrainSlugs83

И http://www.httrack.com/ имеет приятный графический интерфейс (и он бесплатный) для зеркалирования сайтов. Он также имеет версию для Linux.

2
Zsolt Botykai

Вы также можете использовать wget, упакованный в PowerShell . ; ^) Чтобы открыть, нажмите клавишу Windows и введите «powershell» или Windows-R, введите «powershell» и нажмите return.

Нет необходимости установки.

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

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

Вы можете получить WGet для Windows здесь . В качестве альтернативы вы можете щелкнуть правой кнопкой мыши ссылку для загрузки элемента, который хотите загрузить, и выбрать «Сохранить как». Это загрузит файл, а не откроет его в назначенном приложении.

1
BinaryMisfit

Я думаю, что установка wget через Chocolatey - самый простой способ.

  1. Установить Шоколадный
  2. В командной строке введите: choco install wget
  3. Затем вы можете использовать wget из командной строки, как в * nix системах.
0
sivabudh

Если вам нужен графический интерфейс, тогда попробуйте VisualWget , который на самом деле чистый и с полным набором функций. Он основан на GNU Wget для его механизма загрузки.

Правка: обновленная ссылка.

0
Wurlitzer

Как указано в этом SU ответе , вы можете использовать в Powershell следующее:

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