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.