309

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

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

18 ответов18

293

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

167

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

Из Wget Wiki FAQ:

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

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

Windows Binaries

Вместо этого используется ссылка с любезности Йерней Симончич.

68

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

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

Или в гольф

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

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

49

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

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

Существует родной 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.

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

8

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

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

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

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

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

2

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

2

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

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

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

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

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

0

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

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

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

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

0

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

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

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

-3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .