如何在Windows中从命令行下载文件,如wget或curl
如何在不打开Acrobat Reader/Quicktime/MS Word/whatw什么的情况下,直接从网上下载东西?
我用的是Windows,所以用Windows版本的Wget就可以了。
如何在不打开Acrobat Reader/Quicktime/MS Word/whatw什么的情况下,直接从网上下载东西?
我用的是Windows,所以用Windows版本的Wget就可以了。
最近我发现了一个替代方法,使用PowerShell:
$client = new-object System.Net.WebClient
$client.DownloadFile("http://www.xyz.net/file.txt","C:\tmp\file.txt")
这在GET查询中也很好用。你在那里输入的凭证将被用来下载文件。你只需要对所有使用$client对象的时间做一次。
Wget for Windows应该可以正常工作。
GNU Wget是一个免费的网络工具,可以使用HTTP和FTP这两种最广泛使用的互联网协议从万维网中检索文件。它的工作方式是非交互式的,因此可以在登录后在后台工作。
从 FAQ 的这个部分,建议下载链接:
Windows Binaries
由Jernej Simončič提供。http://eternallybored.org/misc/wget/
from sourceforge: http://gnuwin32.sourceforge.net/packages/wget.htm
[…]
链接是由Jernej Simončič提供的。
如果你有PowerShell 3.0,你可以通过Invok-WebRequest
Invoke-WebRequest -OutFile index.html http://superuser.com
或者在Windows中通过HTTP下载文件
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
将下面的文字保存为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");
*/
我做了一个快速的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文件名带空格_中借用了一些代码。
有一个原生的cURL for Windows 这里。 它们是等价的。 **
不需要额外的文件或下载就可以获得wget
的功能:
Using Curl In Powershell (The Sociable Geek)
摘录:
你可以输入一个cURL命令,就像从GitHub仓库中下载一个文件一样。
看上去好像是有效的,但实际上它只是用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上工作。
我也在搜索,由于我没有安装上述任何一个包的权限,所以我用了一个小方法(下载30多个文件):
–我创建了一个批处理文件
–列出了所有的文件
–把firefox.exe
放在每行的开头
–进入firefox目录Program Files
–运行。
你也可以使用PowerShell中的wget
包。)
与传统的wget
有一个有趣的不同之处(更多内容请参见那个链接)。PowerShell中的wget
只是Invoke-WebRequest
的一个方便包装符,你需要使用它的语法来写入文件。
如果PowerShell是一个选项,那是首选,因为你(可能)不需要安装任何额外的东西:
(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt', 'C:\tmp\file.tx??t')
如果没有,Wget for Windows,正如其他人指出的那样,绝对是第二好的选择。正如在另一个答案中提到的那样,你可以下载Wget本身,或者你可以把它作为Cygwin或MSys的一部分。
如果由于某种原因,你发现自己被困在一个时空穿梭中,使用的是一台没有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网站都需要用户名和密码;但如果他们允许 "匿名 "用户,那么用户名就是 "匿名",密码就是你的邮箱地址(如果你不想被跟踪,可以编一个,但一般都有一定的逻辑来确定是有效的邮箱地址)。
而http://www.httrack.com/有一个不错的GUI(而且是免费的),用于镜像网站。它也有一个Linux版本。
你可以从 WGet for Windows 这里 获取 WGet。或者你可以在你要下载的项目的下载链接上点击右键并选择另存为。这将下载该文件,而不是在指定的应用程序中打开它。
如本【SU答案】(https://superuser.com/a/387515/75184)中记载的那样,你可以在Powershell中使用以下内容:
Import-Module bitstransfer
start-bitstransfer -source http://something/something.ext -destination c:\something.ext
如果你想要一个GUI,那就试试VisualWget,它其实很干净,而且功能齐全。它是基于GNU Wget的下载引擎。
EDIT: 更新了链接。
使用 gnuwin32 的替代方案是 unxutils ,其中包括 wget。