Wget / cURL alternatywa macierzysta dla systemu Windows?


60

Czy w systemie Windows Vista jest narzędzie wiersza polecenia typu Wget lub cURL ? Jak to działa?


Nawet Microsoft dystrybuuje wget.exew pakiecie administracyjnym IIS.
paradroid


1
Używanie curl tylko do pobierania rzeczy jest jak używanie vima tylko dla funkcji wyrażenia regularnego, a następnie powiedzenie pytania o vimie jest duplikatem pytania o wyrażenia regularne. Tak, pobieranie plików danych to ogromna część HTTP, ale nie jest to jej główny cel.
erikbwork

Październik 2017 z Windows 8.1: wget i curl są zawarte w PowerShell, jak pokazano tutaj: stackoverflow.com/questions/33364752/…
SDsolar

Nie, * wersje nix wgeti curlnie są zawarte w PowerShell. Polecenie Invoke-WebRequestcmdlet programu PowerShell jest aliasowane zarówno jako, jak wgeti curl. Działa podobnie do bardzo podstawowych żądań, ale ma zasadniczo różne parametry.
Mashmagar,

Odpowiedzi:


32

Natywny dla systemu Windows (jest wstępnie zainstalowany i zależy od usługi Windows w tle Usługa inteligentnego transferu w tle (BITS)):

BITSAdmin

Może robić to, co robi Wget, i prawdopodobnie więcej (możesz kontrolować bieżące zadanie za pomocą poleceń podobnych do API - na przykład możesz uzyskać szybkość statusu i anulować, jeśli jest on zbyt wolny).

Przykładowe użycie z własnego doświadczenia (możesz wykonywać równoległe pobieranie w tym samym pliku .bat lub sekwencyjne pobieranie w tym samym zadaniu):

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

Uwaga: Działa w systemie Windows XP, 7, 8 i 10 (testowany w systemie Windows 10 Pro). W systemie Windows XP należy go zainstalować ręcznie z narzędzi obsługi dodatku SP2 .

W najnowszym systemie Windows 10 ostrzeżenie o wycofaniu zniknęło, więc wygląda na to, że to przydatne narzędzie pozostanie.


2
sprawdź / SetNotifyCmdLine, jeśli chcesz użyć tego polecenia sekwencyjnie w .bat
Tiberiu-Ionuț Stan

5
Uruchomienie programu bitsadmin w systemie Windows 7 wyświetla następujące ostrzeżenie: 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.Uwaga! Użytkownicy.
yop83

„Narzędzia administracyjne dla usługi BITS są teraz dostarczane przez cmdlety BITS PowerShell.” Nie ma się czego wystrzegać. Tylko klient BITS jest przestarzały, a usługa BITS pozostanie. Będzie dostępny z innym, podobnym pod względem funkcjonalności klientem (PowerShell zostanie wstępnie zainstalowany w przyszłych wersjach systemu Windows).
Tiberiu-Ionuț Stan

Uwaga: Klient bitsadmin jest obecny w systemie Windows 8 z tym samym ostrzeżeniem o wycofaniu.
Tiberiu-Ionuț Stan

2
To wygląda na alternatywę dla menedżera pobierania, a nie dla twórcy żądań HTTP, prawda?
erikbwork,

17

PowerShell v3 CTP1 zawiera polecenie takie jak wget / curl. Nazywa się Invoke-WebRequest . Aby dowiedzieć się więcej, możesz odwiedzić wpis Windows Powershell V3 zawiera polecenia takie jak wget / curl .


2
Widzę, że zarówno superuser.com/a/25540/106977, jak i superuser.com/a/330754/106977 odnoszą się do poleceń PowerShell. Nie próbowałem żadnego z nich, ale te linki są związane z tym postem.
bgoodr

Jest to świetne narzędzie i jest dostarczane z systemem Windows Server 2012 R2.
sfuqua,


Jak wiem, Invoke-WebRequestnie mogę ignorować błędów certyfikatów (bardzo przydatna funkcja dla programistów). Przynajmniej w wersji 3.0
maxkoryukov

Nie mogę Invoke-WebRequestzignorować błędów certyfikatów w programie PowerShell 5.1, ale dokumentacja w programie PowerShell 6 zawiera SkipCertificateCheckflagę: docs.microsoft.com/en-us/powershell/module/…
Mashmagar

11

Często używam PowerShell do prostych rzeczy, takich jak DownloadString WebClienta :

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

Lub DownloadFilejeśli chcesz coś pobranego jak wgetrobi i spakuj to w funkcję. Oczywiście jest to bardzo szorstkie i nie będzie miało nic takiego jak wznawianie pobierania i podobne.


Korzystanie DownloadFile. to działało, gdy próbowałem go (PowerShell 2.0) $wc.DownloadFile('http://traffic.libsyn.com/makingembeddedsystems/embedded-ep149.mp3', 'EmbeddedFm_149.mp3'). Jednak podczas pobierania nie ma informacji o postępie.
Peter Mortensen

@PeterMortensen: Oczywiście, że nie. To tylko obiekt .NET. Możesz jednak dołączyć moduł obsługi zdarzeń DownloadProgressChanged. Ale sądzę, że będziesz musiał także użyć wariantów asynchronicznych metod.
Joey

6

Wygląda na to, że musisz tylko pobrać alternatywną przeglądarkę. Możesz użyć tego polecenia, aby pobrać Mozilla Firefox z wierszem polecenia:

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

Spowoduje to również uruchomienie programu Internet Explorer, ale tylko z podstawowym zestawem funkcji. Powinno to działać, nawet jeśli Internet Explorer jest uszkodzony (w większości przypadków).

Możesz także użyć polecenia FTP. Wpisz następujące polecenie w poleceniach wiersza polecenia:

  1. Typ FTP- który otwiera klienta FTP
  2. Typ open ftp.mozilla.org- który łączy się z Mozilla-FTP
  3. Zaloguj się jako Anonimowy i użyj pustego hasła.
  4. Wpisz cd /pub/mozilla.org/firefox/releases/4.0.1/win32/en-US/-Aby zmienić katalog
  5. Typ recv "Firefox Setup 4.0.1.exe"- aby pobrać instalator Firefox. Plik znajduje się w bieżącym folderze wiersza polecenia. (zwykle twój Profilefolder)
  6. Wpisz, byeaby zamknąć klienta FTP
  7. Wpisz, exitaby zamknąć wiersz polecenia.

3
Ładna odpowiedź, ale całkowicie niezwiązana z zadanym pytaniem.
Antimony

4
Um. Wydaje się, że jest to zarówno aktualne, jak i przykład użycia explorer.exe jako alternatywy.
Michael Cole

6

Naprawdę nie ma alternatywy dla Wget. Możesz użyć Wget dla Windows i przypisać ścieżkę do zmiennych środowiskowych, aby działała tak, jak chcesz.


1
Problem polega na tym, że osoba, z którą pracuję, blokuje się podczas uruchamiania przeglądarki i nie mają one dostępu do innego komputera.
Jordan

2
Jeśli działają przez sieć Ethernet, spraw, aby uruchomiły się w trybie awaryjnym z obsługą sieci?
Sandeep Bansal

2

Natywny cURL dla Windows jest dostępny tutaj . Dostępnych jest wiele smaków - z obsługą SSL, bez obsługi SSL. Nie potrzebujesz dodatkowego bagażu Cygwin i podobnych, tylko jeden mały plik EXE.


1

Chciałbym po prostu użyć Cygwina i zainstalować potrzebne biblioteki ... Zawsze to robiłem ...

W przeszłości szukałem alternatyw, tak. Ale Cygwin jest najlepszym narzędziem do pracy.


2
Tyle że przesadzanie z instalowaniem gazillionów plików dla typowej instalacji Cygwin tylko po to, aby uzyskać Wget.
Peter Mortensen

Dostajesz wget, curl, ... i wiele więcej. Podejrzewam, że jeśli będziesz potrzebować wget, prawdopodobnie w przyszłości użyjesz dodatkowych narzędzi linuksowych :) - zdecydowanie nie jest to jednak codzienny scenariusz
NicoJuicy

1

Stworzyłem własne. Sprawdź to na https://github.com/acarrilho/global (na dole strony).

Pobierz źródło i za pomocą cmd.exe przejdź do folderu requestera. Stamtąd wpisz, httpaby zobaczyć wszystkie dostępne ustawienia. Jako przykład:

http -u "http://www.example.com" -oc
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.