Wget / cURL альтернатива родной для Windows?


60

Существует ли утилита командной строки типа Wget или cURL, родная для Windows Vista ? Как это работает?


Даже Microsoft распространяется wget.exeв пакете администрирования IIS.
— paradroid


1
Использование curl только для загрузки вещей похоже на использование vim только для функции регулярных выражений, а затем вопрос о vim является дубликатом вопроса о регулярных выражениях. Да, загрузка файлов данных - это огромная часть HTTP, но это не его основная цель.
— erikbwork

Октябрь 2017 года с Windows 8.1: wget и curl включены в PowerShell, как показано здесь: stackoverflow.com/questions/33364752/…
— SDsolar

Нет, * nix версии wgetи curlне включены в PowerShell. Invoke-WebRequestКомандлет PowerShell имеет псевдоним как wgetи curl. Он работает аналогично для самых простых запросов, но имеет существенно разные параметры.
— Машмагар

Ответы:


32

Родной для Windows (поставляется предварительно установленным и зависит от службы Windows Background Intelligent Transfer Service (BITS)):

BITSAdmin

Он может делать то, что делает Wget, и, возможно, больше (вы можете контролировать текущую работу с помощью API-подобных команд - например, вы можете получить скорость состояния и отменить, если она слишком медленная).

Пример использования из моего собственного опыта (вы можете выполнять параллельные загрузки в одном и том же .bat или выполнять последовательные загрузки в одном и том же задании):

bitsadmin /create thisissomejobname

bitsadmin /addfile thisissomejobname http://kakao.ro/Pictures.iso C:\john_pictures.iso

bitsadmin /SetCredentials thisissomejobname Server BASIC somehttpuser somehttppassword

bitsadmin /resume thisissomejobname

REM how to get status:
bitsadmin /info thisissomejobname

Примечание. Работает в Windows XP, 7, 8 и 10 (протестировано в Windows 10 Pro). В Windows XP его необходимо установить вручную из средств поддержки SP2 .

В последней версии Windows 10 предупреждение об устаревании исчезло, так что похоже, что этот полезный инструмент уже здесь.


2
проверьте / SetNotifyCmdLine параметр, если вам нужно использовать эту команду последовательно в .bat
— Tiberiu-Ionuț Stan

5
При запуске bitsadmin в Windows 7 отображается следующее предупреждение: «Остерегайтесь BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows. Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.пользователей.
— yop83

«Административные инструменты для службы BITS теперь предоставляются командлетами BITS PowerShell». Нечего опасаться. Только клиент BITS устарел, а служба BITS останется. Он будет доступен с другим, похожим по функциональности, клиентом (PowerShell будет поставляться с предустановленными будущими версиями Windows).
— Tiberiu-Ionuț Stan

Примечание. Клиент Bitsadmin присутствует в Windows 8 с тем же предупреждением об устаревании.
— Tiberiu-Ionuț Stan

2
Это похоже на альтернативу диспетчеру загрузки, а не создателю HTTP-запроса, не так ли?
— erikbwork

18

PowerShell v3 CTP1 поставляется с такой командой, как wget / curl. Это называется Invoke-WebRequest . Чтобы узнать больше, вы можете посетить пост Windows PowerShell V3, включающий такие команды, как wget / curl .


2
Я вижу, что superuser.com/a/25540/106977 и superuser.com/a/330754/106977 относятся к командам Powershell. Я не пробовал ни один из них, но эти ссылки относятся к этой публикации.
— bgoodr

Это отличная утилита и поставляется с Windows Server 2012 R2.
— sfuqua


Как я знаю, Invoke-WebRequestнельзя игнорировать ошибки сертификатов (очень полезная функция для разработчиков). По крайней мере, в версии 3.0
— макскорюков

Я не могу Invoke-WebRequestигнорировать ошибки сертификатов в PowerShell 5.1, но документация в PowerShell 6 включает SkipCertificateCheckфлаг: docs.microsoft.com/en-us/powershell/module/…
— Mashmagar

11

Я часто использую PowerShell для простых вещей, таких как DownloadCring WebClient :

$wc = New-Object Net.WebClient
$wc.DownloadString('...')

Или, DownloadFileесли вы хотите, чтобы что-то загружалось, как это wgetделается, и упаковывайте это в функцию. Конечно, это очень грубо и не будет никаких изюминок, таких как возобновляемая загрузка и тому подобное.


Использование DownloadFile. он работал , когда я пробовал (PowerShell 2.0): $wc.DownloadFile('http://traffic.libsyn.com/makingembeddedsystems/embedded-ep149.mp3', 'EmbeddedFm_149.mp3'). Тем не менее, нет никакой информации о прогрессе во время загрузки.
— Питер Мортенсен

@PeterMortensen: Конечно нет. Это просто объект .NET. Вы можете прикрепить обработчик событий к DownloadProgressChanged. Но я думаю, тогда вам также нужно будет использовать асинхронные варианты методов.
— Джо

6

Кажется, вам нужно всего лишь скачать альтернативный браузер. Вы можете использовать эту команду для загрузки Mozilla Firefox из командной строки:

explorer.exe http://releases.mozilla.org/pub/mozilla.org/firefox/releases/6.0.2/win32/en-US/Firefox%20Setup%206.0.2.exe

Это также запускает Internet Explorer, но только с базовым набором функций. Это должно работать, даже если Internet Explorer не работает (в большинстве случаев).

Вы также можете использовать команду FTP. Введите следующую команду в командной строке:

  1. Тип FTP- который открывает клиент FTP
  2. Тип open ftp.mozilla.org- который подключается к Mozilla-FTP
  3. Просто войдите как Аноним и используйте пустой пароль.
  4. Тип cd /pub/mozilla.org/firefox/releases/4.0.1/win32/en-US/-Чтобы изменить каталог
  5. Тип recv "Firefox Setup 4.0.1.exe"- Чтобы загрузить установщик Firefox. Файл находится в текущей папке командной строки. (обычно ваша Profileпапка)
  6. Введите, byeчтобы закрыть FTP-клиент
  7. Введите, exitчтобы закрыть командную строку.

3
Хороший ответ, но совершенно не связанный с заданным вопросом.
— Сурьма

4
Um. Кажется актуальным и пример использования explorer.exe в качестве альтернативы.
— Майкл Коул

6

На самом деле альтернативы Wget нет. Вы можете использовать Wget для Windows и назначить путь в переменных среды, чтобы он работал так, как вы хотите.


1
Проблема в том, что человек, с которым я работаю, получает зависание браузера при запуске, и у них нет доступа к другому компьютеру.
— Джордан

2
Если они работают через Ethernet, заставить их загружаться в безопасном режиме с сетью?
— Сандип Бансал

2

Родной CURL для Windows доступен здесь . Существует множество разновидностей - с поддержкой SSL, без поддержки SSL. Вам не нужен дополнительный багаж Cygwin и тому подобное, всего один маленький EXE-файл.


1

Я бы просто использовал Cygwin и установил нужные библиотеки ... Я всегда так делал ...

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


2
За исключением того, что это лишняя установка gazillions файлов для типичной установки Cygwin только для получения Wget.
— Питер Мортенсен

Вы получаете Wget, Curl, ... и многое другое. Полагаю, если вам понадобится wget, вы, вероятно, будете использовать некоторые дополнительные инструменты Linux в будущем :) - хотя
— определенно

1

Я создал свой собственный. Проверьте это на https://github.com/acarrilho/global (внизу страницы).

Загрузите исходный код и, используя cmd.exe, перейдите в папку запрашивающего. Оттуда просто введите, httpчтобы увидеть все доступные настройки. В качестве примера:

http -u "http://www.example.com" -oc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.