Wget/cURL alternative native to Windows?

Solution 1:

Native to Windows (comes preinstalled and depends on the Background Intelligent Transfer Service (BITS) Windows service):

BITSAdmin

It can do what Wget does, and probably more (you can control an ongoing job via API-like commands - for example you can get the status speed and cancel if it is too slow).

Example usage from my own experience (you can do parallel downloads in the same .bat, or do sequential downloads in the same job):

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

Note: It works on Windows XP, 7, 8 & 10 (tested on Windows 10 Pro). On Windows XP it must be installed manually from the SP2 Support Tools.

On the latest Windows 10 the deprecation warning is gone, so it looks like this useful tool is here to stay.

Solution 2:

PowerShell v3 CTP1 comes with a command like wget/curl. It's called Invoke-WebRequest. To learn more, you can visit the post Windows Powershell V3 includes command like wget/curl.

Solution 3:

I often use PowerShell for simple things, like WebClient's DownloadString:

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

Or DownloadFile if you want something downloaded like wget does and package that off into a function. Of course, this is very rough and won't have any of the niceties like resumable downloads and similar.