2009-08-19 11:40:48 +0000 2009-08-19 11:40:48 +0000
372
372

如何在Windows中从命令行下载文件,如wget或curl

如何在不打开Acrobat Reader/Quicktime/MS Word/whatw什么的情况下,直接从网上下载东西?

我用的是Windows,所以用Windows版本的Wget就可以了。

答案 (19)

323
323
323
2011-09-01 13:25:11 +0000

最近我发现了一个替代方法,使用PowerShell:

$client = new-object System.Net.WebClient
$client.DownloadFile("http://www.xyz.net/file.txt","C:\tmp\file.txt")

这在GET查询中也很好用。你在那里输入的凭证将被用来下载文件。你只需要对所有使用$client对象的时间做一次。

187
187
187
2009-08-19 11:45:59 +0000

Wget for Windows应该可以正常工作。

来自Wget Wiki FAQ:

GNU Wget是一个免费的网络工具,可以使用HTTP和FTP这两种最广泛使用的互联网协议从万维网中检索文件。它的工作方式是非交互式的,因此可以在登录后在后台工作。

FAQ 的这个部分,建议下载链接:

Windows Binaries

链接是由Jernej Simončič提供的。

95
95
95
2014-05-17 19:15:46 +0000

如果你有PowerShell 3.0,你可以通过Invok-WebRequest

Invoke-WebRequest -OutFile index.html http://superuser.com

或者在Windows中通过HTTP下载文件

64
64
64
2011-12-30 17:40:02 +0000

Windows有自己的命令行下载工具 - BITSAdmin :

BITSAdmin是一个命令行工具,可以用来创建下载或上传作业并监控其进度。26.01.15 - 下面是我对windows上如何在没有外部工具的情况下下载文件的概述

还有一个完整的bitadmin的例子:

bitsadmin /transfer myDownloadJob /download /priority normal http://downloadsrv/10mb.zip c:0mb.zip

编辑* : 15.05.2018 - turned out that’s possible to download a file with certutil too :

certutil.exe -urlcache -split -f "https://download.sysinternals.com/files/PSTools.zip" pstools.zip

Certutil is not installed by default on XP/Win2003 but is avaialble on the newer windows versions.For XP/2003 you’ll need the Admin Tool Pack for windows server 2003

33
33
33
2013-01-15 07:03:23 +0000

将下面的文字保存为wget.js,直接拨打

cscript /nologo wget.js http://example.com

这是个密码:

var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET", WScript.Arguments(0), /*async=*/false);
WinHttpReq.Send();
WScript.Echo(WinHttpReq.ResponseText);

/* To save a binary file use this code instead of previous line
BinStream = new ActiveXObject("ADODB.Stream");
BinStream.Type = 1;
BinStream.Open();
BinStream.Write(WinHttpReq.ResponseBody);
BinStream.SaveToFile("out.bin");
*/
22
22
22
2013-03-02 13:30:36 +0000

我做了一个快速的myGet.bat文件,它可以调用上面描述的PowerShell方法。

@Echo OFF
SetLocal EnableDelayedExpansion
Set Var=%1
Set Var=!Var:http://=!
Set Var=!Var:/=,!
Set Var=!Var:%%20=?!
Set Var=!Var: =?!
Call :LOOP !var!
Echo.Downloading: %1 to %~p0!FN!
powershell.exe -Command (new-object System.Net.WebClient).DownloadFile('%1','%~p0!FN!')
GoTo :EOF
:LOOP
If "%1"=="" GoTo :EOF
Set FN=%1
Set FN=!FN:?= !
Shift
GoTo :LOOP

我从解析URL文件名带空格_中借用了一些代码。

22
22
22
2012-10-27 14:16:23 +0000

有一个原生的cURL for Windows 这里。 它们是等价的。 **

不需要额外的文件或下载就可以获得wget的功能: Using Curl In Powershell (The Sociable Geek)

摘录:

你可以输入一个cURL命令,就像从GitHub仓库中下载一个文件一样。

curl http://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json

看上去好像是有效的,但实际上它只是用cURL作为别名。

PowerShell中的别名可以让你为较长的命令创建快捷方式,这样你就不用一直输入它们。如你所见,curl命令只是调用了Invoke-WebRequest命令。它们相似但不一样,这就是为什么上面的请求对我们来说不起作用的原因。

要想在PowerShell中正常工作,最简单的方法是使用变量和curl参数,如图所示:

(文件名在图片中被切断的文件名https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy. json “)

这个语法将把目标文件wget的全部内容下载到本地文件-OutFile*

**

**主要的优点是它是内置在Powershell中的,所以这段代码将直接执行,不需要下载或任何其他额外的文件创建,就可以在任何现代版本的Windows上工作。

8
8
8
2013-04-09 08:13:58 +0000

我也在搜索,由于我没有安装上述任何一个包的权限,所以我用了一个小方法(下载30多个文件):

–我创建了一个批处理文件 –列出了所有的文件 –把firefox.exe放在每行的开头 –进入firefox目录Program Files–运行。

4
4
4
2017-02-01 14:06:11 +0000

你也可以使用PowerShell中的wget。)

与传统的wget有一个有趣的不同之处(更多内容请参见那个链接)。PowerShell中的wget只是Invoke-WebRequest的一个方便包装符,你需要使用它的语法来写入文件。

4
4
4
2012-10-22 05:48:35 +0000

如果PowerShell是一个选项,那是首选,因为你(可能)不需要安装任何额外的东西:

(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt', 'C:\tmp\file.tx??t')

如果没有,Wget for Windows,正如其他人指出的那样,绝对是第二好的选择。正如在另一个答案中提到的那样,你可以下载Wget本身,或者你可以把它作为CygwinMSys的一部分。

如果由于某种原因,你发现自己被困在一个时空穿梭中,使用的是一台没有PowerShell的机器,而且你根本无法访问有效的网络浏览器(也就是说,Internet Explorer是系统上唯一的浏览器,而且它的设置已经损坏),而你的文件是在一个FTP网站上(而不是HTTP)。

start->run "FTP", press "OK".

如果没记错的话,它从Windows 98开始就一直存在,我可以确认它在Windows 8 RTM中仍然存在(你可能需要进入appwiz.cpl和添加/删除功能才能得到它)。这个工具可以在网上下载和上传文件到/从FTP网站上的文件。](http://www.howtofixcomputers.com/forums/windows-xp/how-use-command-ftp-exe-windows-98176.html)

这个工具的内置功能在过去是我的救星,尤其是在ftp.cdrom的时代,它是我的救星。 我曾经用这种方式下载过Firefox,在一台只有拨号上网的机器上(那时Sneakernet的最大数据包大小还是1.44 MB,Firefox还叫 “Netscape”/我做trollface)。试试键入 “帮助"。所有的FTP网站都需要用户名和密码;但如果他们允许 "匿名 "用户,那么用户名就是 "匿名",密码就是你的邮箱地址(如果你不想被跟踪,可以编一个,但一般都有一定的逻辑来确定是有效的邮箱地址)。

3
3
3
2019-06-02 21:52:23 +0000
3
3
3
2012-02-16 17:10:01 +0000
2
2
2
2009-08-19 11:54:38 +0000

http://www.httrack.com/有一个不错的GUI(而且是免费的),用于镜像网站。它也有一个Linux版本。

1
1
1
2009-08-19 11:46:49 +0000

你可以从 WGet for Windows 这里 获取 WGet。或者你可以在你要下载的项目的下载链接上点击右键并选择另存为。这将下载该文件,而不是在指定的应用程序中打开它。

1
1
1
2018-06-17 11:29:05 +0000

我认为通过 Chocolatey 安装 wget 是最简单的方法。在命令行中键入:choco install wget 3. 3. 然后你可以像在*nix系统中一样,在命令行中使用wget

0
0
0
2018-12-05 19:27:48 +0000

如本【SU答案】(https://superuser.com/a/387515/75184)中记载的那样,你可以在Powershell中使用以下内容:

Import-Module bitstransfer
start-bitstransfer -source http://something/something.ext -destination c:\something.ext
0
0
0
2012-02-16 16:58:17 +0000

如果你想要一个GUI,那就试试VisualWget,它其实很干净,而且功能齐全。它是基于GNU Wget的下载引擎。

EDIT: 更新了链接。

-1
-1
-1
2011-07-21 16:00:11 +0000

使用 gnuwin32 的替代方案是 unxutils ,其中包括 wget。

-3
-3
-3
2016-04-12 07:45:52 +0000

如果你需要一个Windows的视觉帖,这里是一个。 你可以用它发布数据或文件。