Windows原生的Wget / CURL替代品?


60

Windows Vista是否有Wget或cURL类型的命令行实用程序?它是如何工作的?


甚至Microsoft wget.exe也在IIS管理包中分发。
paradroid 2011年


1
仅将curl用于下载内容就像将vim仅用于正则表达式功能,然后说关于vim的问题与正则表达式的问题是重复的。是的,下载数据文件是HTTP的重要组成部分,但这不是其主要目的。
erikbwork

2017年10月与Windows 8.1:wget和卷曲都包含在PowerShell中,如下所示: stackoverflow.com/questions/33364752/...
SDsolar

不,* nix版本的wgetcurl不包含在PowerShell中。PowerShell Invoke-WebRequestcmdlet的别名为wgetcurl。对于非常基本的请求,它的工作方式相似,但参数却大不相同。
Mashmagar

Answers:


32

Windows固有的(已预先安装,并取决于后台智能传输服务(BITS)Windows服务):

BITS管理员

它可以完成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
如果需要在.bat中依次使用此命令,请检出/ SetNotifyCmdLine选项
Tiberiu-Ionuț Stan

5
在Windows 7下运行bitsadmin将显示以下警告: 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 PowerShell cmdlet现在提供了BITS服务的管理工具。” 没什么要提防的。仅BITS客户端已弃用,而BITS服务将保留。可以使用另一个功能相似的客户端来访问它(PowerShell将预安装在将来的Windows版本中)。
Tiberiu-Ionuț Stan

注意:Windows 8中存在bitsadmin客户端,具有相同的弃用警告。
Tiberiu-Ionuț Stan 2014年

2
这看起来像是下载管理器的替代品,而不是HTTP请求设计器的替代品,不是吗?
erikbwork

17

PowerShell v3 CTP1随附有wget / curl之类的命令。它称为Invoke-WebRequest。要了解更多信息,请访问Windows Powershell V3包括wget / curl之类的命令


2
我看到superuser.com/a/25540/106977superuser.com/a/330754/106977都参考Powershell命令。我没有尝试过任何一个,但是那些链接与这篇文章有关。
bgoodr 2012年

Windows Server 2012 R2附带有一个很棒的实用程序。
sfuqua 2015年


据我所知,Invoke-WebRequest不能忽略证书错误(对开发人员而言非常有用的功能)。至少在3.0版中
maxkoryukov

我无法Invoke-WebRequest忽略PowerShell 5.1中的证书错误,但是PowerShell 6中的文档包含一个SkipCertificateCheck标志:docs.microsoft.com/zh-cn/powershell/module/…–
Mashmagar

11

我经常将PowerShell用于简单的事情,例如WebClient的 DownloadString

$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
嗯 似乎既是主题话题,又是使用explorer.exe作为替代品的示例。
Michael Cole 2015年



1

我只会使用Cygwin并安装所需的库...我一直都这样做...

过去,我一直在寻找替代方案,是的。但是Cygwin只是完成这项工作的最佳工具。


2
只是为了获得Wget而为典型的Cygwin安装安装了成千上万的文件是过分的。
彼得·莫滕森

您会得到wget,卷曲,……等等。我想如果您需要wget,将来可能会使用一些其他的Linux工具:)-虽然
绝对

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.