Вопрос: Как загрузить файлы из командной строки в Windows, например wget или curl


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

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


281


Источник


Просто щелкните правой кнопкой мыши файл и нажмите «Сохранить объект как» или «Сохранить ссылку как» или «Сохранить как» (язык зависит от вашего браузера) будет работать. - BrainSlugs83
Точка наличия команды может писать командный файл и запускать его (возможно, запланированную как задачу) в любое время. Вот тут и не хватает GUI. - Jbm
Как скачать с помощью MS Word? - Jaime Hablutzel
@JaimeHablutzel Почему вы когда-нибудь захотите скачать что-то через MS Word? MS Word не является терминалом. - Braden Best
@SDsolar Или просто повышать / улучшать этот ответ ниже. - Franklin Yu


Ответы:


Wget for Windows должно сработать.

Из Вопросы по Wget Wiki:

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

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

Windows Binaries

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


155



Также есть Winwget cybershade.us/winwget если вы предпочитаете gui - Col
Автономная версия может быть загружена из эта ссылка, - Vito Gentile
Более поздний, даже современный (на сегодняшний день) Windows строит, предоставленный Jernej Simončič - Gras Double
@VitoShadow неработающая ссылка - The Red Pea
@cixelsyd Обновлена ​​ссылка на альтернативный источник. - clearkimura


Альтернатива, которую я недавно обнаружил, используя 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.


271



Вы также можете сделать это в одной строке: (new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt','C:\tmp\file.txt') - schellack
@Rob powershell встроена в Windows ... - nhinkle♦
Да, с Vista. - Arran
@ BrainSlugs83, абсолютно, но многие, многие, люди все еще используют XP. Это просто нужно помнить. - Arran
@ BrainSlugs83, вы недооцениваете количество людей, все еще находящихся на старых системах Windows. Я не понимаю вопроса, я указал, что это только на Vista вверх. Люди могут отказаться от него или сказать «эй, спасибо!», Но ты ...? Если у вас есть проблема, создайте чат, и мы сможем поговорить. Кто-то с представителями (как и вы) должен осознать Вот не место для этой дискуссии. - Arran


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

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

Или игра в гольф

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

Загрузите файл через HTTP в Windows


63



Это не работает с перенаправлением на sourceforge (и, возможно, на другие сайты), в отличие от System.Net.WebClient, Однако вы можете сделать Invoke-WebRequest работать, добавляя -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox, - Ela782
Это правильный ответ, @ CédricBelin прав. Вопрос и принятый ответ довольно старые. - Factor Mystic
Чтобы запустить это из терминала cmd: powershell -command "& {&'iwr' index.html http://superuser.com}" - dario_ramos
Есть ли возможность увидеть ход загрузки? - Franklin Yu
@FranklinYu прогресс покажет, достаточно ли файл - Steven Penny


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

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

РЕДАКТИРОВАТЬ: 26.01.15 - Вот мой обзор того, как файл можно загружать на окна без внешних инструментов 

И полный пример bitsadmin:

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 для Windows Server 2003


38



Интересно. Это одна неуклюжая часть программного обеспечения по сравнению с wget. - Matt H
Обратите внимание: он не поставляется с Windows XP и, возможно, не с другими версиями. - Ian Dunn
Обновление: BITSAdmin устарел и не может быть доступен в будущих версиях Windows. Административные средства для службы BITS теперь предоставляются командлетами BITS PowerShell. - nulldev07
@MattH: потому что это не suppsoed, чтобы быть wget в первую очередь? - видеть en.wikipedia.org/wiki/Background_Intelligent_Transfer_Service - peterchen
Не удалось добавить файл - 0x80070057 - Tomáš Zato


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

28



На каком языке находится этот скрипт? Выглядит полезно для моей текущей задачи. Я бы хотел найти дополнительную справочную документацию. Не похоже на vb - G-.
Полезно для одиночных файлов. Нуждается в улучшении для рекурсивной загрузки и https. - opticyclic
@Г-. Я опаздываю на вечеринку, но это JavaScript. - prooffreader
Я пытался это сделать для database.clamav.net/daily.cvd, но он загрузил только 88kB из 44MB :( - kokbira


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


16



почему downvote? это выглядит хорошо для меня и является прямым ответом на вопрос. Да, это неудобно и может использовать улучшение, например, ускорение амперсандов (&) в URL-адресе, но оно работает так, как есть. - matt wilkie


Существует доступная CURL для Windows Вот, Существует множество опций с поддержкой SSL и без нее.

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


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

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

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

Выдержка:

Вы можете ввести команду 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.


15



Это делается непосредственно на одной линии, но линия становится довольно длинной и не так сразу читается с первого взгляда. - SDsolar
Лучший способ, спасибо - Konstantin Chernov


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

  • Я создал пакетный файл
  • Перечислил все файлы
  • Положил firefox.exe в начале каждой строки
  • Пошел в каталог firefox в Program Files
  • Рана это.

8





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


4





Если PowerShell это вариант, это предпочтительный маршрут, поскольку вам (потенциально) не придется устанавливать что-либо дополнительно:

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

В противном случае Wget для Windows, как указывали другие, определенно является вторым лучшим вариантом. Как указано в другом ответе, похоже, вы можете загрузить Wget all, или вы можете захватить его как часть Cygwin или MSys,

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

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

Если память работает там с Windows 98, и я могу подтвердить, что она все еще присутствует в RTM Windows 8 (вам, возможно, придется войти в appwiz.cpl и добавить / удалить функции, чтобы получить его). Эта утилита может загружать и загружать файлы на / с FTP-сайтов в Интернете. Он также может использоваться в скриптах для автоматизации любой операции.

Этот инструмент, встроенный в систему, был для меня реальным спасателем в прошлом, особенно в дни ftp.cdrom.com - я загрузил Firefox именно так, на полностью сломанной машине, которая имела только коммутируемый доступ в Интернет (назад, когда максимальный размер пакета sneakernet был еще 1,44 МБ, а Firefox по-прежнему назывался «Netscape», / me trollface).

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


3



+1 для мышления командной строки ftp! Однако wget и powershell были упомянуты еще до того, как вы присоединились к вечеринке, так что -1. : - / - matt wilkie
Другие ответы на powershell, которые я видел, были все многоканальные и / или имели некоторый запах кода для них - это короткий и простой один вкладыш для загрузки файла. - Также я хотел дать ответ, который охватывал все базы. :-) - BrainSlugs83
Я не уверен, почему у вас есть две вопросительные метки в целевом файле C:\tmp\file.tx??t - Ploni


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


2