如果不使用任何非标准(包括Windows)实用程序,是否可以使用Windows命令行进行下载?

首选版本是Windows XP,但对于较新的版本也很有趣。 />
要进一步阐明我的问题:


它必须使用HTTP
文件需要保存
标准的干净Windows安装,不需要额外的工具

所以基本上,由于每个人都在尖叫Wget,所以我想要简单的Wget功能,而不使用Wget。

评论

“如果Windows中唯一的浏览器已死,如何连接到Internet?”中的更多想法。在superuser.com/questions/50427/…

在这十二种Windows XP版本中,哪一个是呢?

假设它可以是任何Windows XP SP2版本,并且以后都可以发布。

@arjan有趣的问题,但仍然没有确定的答案。

我应该要求“版本”。像Starter,Home,Professional,Media Center,Tablet,甚至甚至是Embedded(我猜那里的工具都有不错的改变!)……或没有Windows Media Player的欧洲版本。 :-)

#1 楼

您可以编写VBScript并从命令行运行它。

创建文件downloadfile.vbs并插入以下代码行:

 ' Set your settings
    strFileURL = "http://www.it1.net/images/it1_logo2.jpg"
    strHDLocation = "c:\logo.jpg"

' Fetch the file
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    objXMLHTTP.open "GET", strFileURL, false
    objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0    'Set the stream position to the start

Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing
 


从命令行运行它,如下所示:

cscript.exe downloadfile.vbs 


评论


我想知道这是否依赖于Internet Explorer,但是我想这对于“如果Windows中唯一的浏览器已死,如何连接到Internet?”将是一个很好的答案。在superuser.com/questions/50427/…:-)

– Arjan
09-10-23在15:37

那就是如果允许对cscript.exe的许可

– hello_there_andy
15年4月2日在11:23

我可以确认我已经在Windows PE 5.1中测试了此脚本,并且它的工作原理像个魅力。我打算将其用于脱机部署,以便根据服务器上存储的文本文件检查USB驱动器中平台的版本。

–徒步旅行者
16年5月5日在16:55

#2 楼

从Windows 7开始,我相信还没有提到一种方法很简单:


bitsadmin  /transfer job_name       /download  /priority priority   URL  local\path\file


示例:

bitsadmin  /transfer mydownloadjob  /download  /priority normal  ^
                  http://example.com/filename.zip  C:\Users\username\Downloads\filename.zip


(为了便于阅读,用^分为两行
(以避免滚动)。)

警告:如所指出在评论中,
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.


...,但又有一条评论报道它在Windows 8上有效。
/>

评论


它是Windows7的一部分。

– akira
2011年8月20日下午4:20

在我的Windows 7上无法正常工作...

– jyz
2012年4月5日,0:14

这应该是投票最多的答案。不过,不建议使用bitsadmin,而是使用Windows powershell。

–lenkite
2012年5月14日9:04



确认在Win7上工作

– kaiser
2012-12-10 7:41

注意:BITSAdmin已被弃用,并且不能保证在Windows的将来版本中可用。 BITS PowerShell cmdlet现在提供了BITS服务的管理工具。

– Ujjwal Singh
13年1月1日于20:33

#3 楼

Windows 7包括PowerShell,几乎没有什么可以用PowerShell做的。

Windows PowerShell中wget的本机替代品?

评论


(新对象Net.WebClient).DownloadFile('someurl','somepath')

–杰森·斯坦格鲁姆(Jason Stangroome)
11-11-17在2:52



Powershell适用于Powerrangers!那是多么愚蠢,为什么我不知道这到底是什么?再见cmd。

– kaiser
2012-12-10 7:45

来自cmd.exe:powershell-命令“&{iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg}”。在运行提示下也可以使用

– Janus Troelsen
14年6月3日,11:57



是的,没有PowerShell是您无法做的。这是一个真正的图拉特:)

– jcarpenter2
14-10-17在17:36

@JanusTroelsen我的PowerShell版本响应“术语'iwr'不被识别为cmdlet的名称,...”,但经过一些调查后,类似的方法起作用:powershell -command“ $ clnt = new-object System.Net.WebClient ; $ clnt.DownloadFile(\“ https:// host / name \”,\“ outpufilename \”)“

–rogerdpack
15年8月28日在21:01



#4 楼

PowerShell(Windows 8附带和早期版本的.NET附带)具有此功能。 powershell命令允许从命令行或.bat文件运行任意PowerShell命令。因此,需要以下行:

powershell -command "& { (New-Object Net.WebClient).DownloadFile('http://example.com/', 'c:\somefile') }"


评论


@harrymc肯定是答案。它下载一个文件。您还想要什么?

– Janus Troelsen
2014年6月3日,11:55

(1)一些说明该单行代码的文字,(2)验证您的答案不是以前答案的替代提法,因为如果是,则最多应表示为对该答案的评论。

–harrymc
2014年6月3日,12:34

该软件需要什么版本的Windows和PowerShell?

– Peter Mortensen
2014年6月6日18:11

这在Windows Server 2012 FYI中不起作用,它将引发MethodInvocationException

– knocte
16年5月18日在9:41

#5 楼

我找到了一种方法,但实际上只需安装Wget。

您可以从命令行(iexplore.exe)使用Internet Explorer,然后输入URL作为参数。因此,运行:

iexplore.exe http://blah.com/filename.zip


无论文件是什么,您都需要指定它不需要提前确认。瞧瞧,它将自动执行下载。所以是的,这在技术上是可行的,但是好主以不同的方式来做。

评论


我知道wget是一种更好的方法,这只是一个假设的问题;)您的答案非常接近,但仍然需要用户干预(单击“保存”,或配置为不显示此对话框)

–罗伯特·马萨(Robert Massa)
09-10-23在15:15

就像我说的那样,您必须取消选择该选项以提示保存该文件类型。例如,下载一个zip文件,禁用该提示,然后将来从命令行访问的所有zip文件将自动保存。

–DHayes
09-10-23在15:17

#6 楼

Windows资源管理器(不要与Internet Explorer混淆)可以通过HTTP下载文件。只需在地址栏中输入URL。或从命令行,例如C:\windows\explorer.exe http://somewhere.com/filename.ext

,您会看到经典的“文件下载”提示。除非文件是Windows资源管理器知道如何内联显示的类型(.html,.jpg,.gif),否则在这种情况下,您需要右键单击以保存它。

我刚刚在我的Windows XP 2002 SP1原始安装的VMware映像上对此进行了测试,并且工作正常。

评论


这需要用户交互。大多数人可能都不希望从命令提示符下下载文件

–基普
2012年11月14日20:14

如今,它取决于您的默认浏览器。我的是chrome,它会自动下载到已知位置,因此我认为此解决方案足以满足我的需求。谢谢!

–kayleeFrye_onDeck
16年11月2日,下午2:57

#7 楼

您可以使用(在标准Windows bat中):

powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }"


似乎需要PowerShell v4 ...

(感谢您的评论)还有这个)

#8 楼

使用FTP。

从命令行:

ftp ftp.somesite.com
user
password


等。我记得每个Windows版本都包含FTP。可能不是在3.1中,可能不是在Windows 95中,但肯定是在此之后的所有内容。

@RM:如果您不想下载任何其他工具,那将很困难。有一个用于Windows的命令行Wget,Wget旨在完全满足您的要求。

评论


+1好答案。 ftp非常通用,只要您要从中下载的服务器支持它即可。

– DaveParillo
09-10-23在15:05

谢谢,对不起,我不是更具体,我的意思是使用HTTP。

–罗伯特·马萨(Robert Massa)
09-10-23在15:10

这不适用于大多数FTP服务器,因为此Windows ftp客户端不支持被动模式(在被动模式之间需要NAT)。

– Peter Mortensen
16-4-5在21:04

@PeterMortensen它也无法远程回答问题,因为他对其进行了编辑以指定他在寻找wget功能。但是,不要因为这样而阻止您复活一个7岁的错误答案,而只是添加一些装饰。

–撒旦小狗
16年4月6日在19:32

#9 楼

像这样使用PowerShell:



创建download.ps1文件:

param($url, $filename)
$client = new-object System.Net.WebClient 
$client.DownloadFile( $url, $filename)



现在您可以下载如下文件:

powershell Set-ExecutionPolicy Unrestricted
powershell -ExecutionPolicy RemoteSigned -File "download.ps1" "http://somewhere.com/filename.ext" "d:\filename.ext"




评论


即使在Windows XP 64位PowerShell 2.0上也可以使用。

– Peter Mortensen
16-4-5在21:13

#10 楼

可以通过以下方法下载文件

bitsadmin / transfer wcb / priority high https://sustainabledevelopment.un.org/content/documents/Agenda21.pdf C:\ Program Files(x86)\ Dell Update \ Agenda21.pdf

#11 楼

在Win CMD上(如果您具有写访问权):

set url=https://www.nsa.org/content/hl-images/2017/02/09/NSA.jpg
set file=file.jpg
certutil -urlcache -split -f %url% %file%
echo Done.


内置于Windows应用中。无需外部下载。

在Win 10上进行了测试

#12 楼

如果安装Telnet,我想您可以向服务器发出HTTP请求以下载文件。

还可以安装Cygwin,也可以使用wget下载文件。这是从命令行下载文件的非常简单的方法。

评论


我很确定'cygwin'被视为非标准实用程序;-)

– DaveParillo
09-10-23在15:04

Telnet是一个有趣的选项,有没有一种方法可以在不破坏输出的情况下将输出传递到文件?我们是否可以将HTTP GET命令通过管道传送到telnet以发出请求?

–罗伯特·马萨(Robert Massa)
09-10-23在15:05

安装telnet? Telnet就像ftp;它带有窗户。虽然不知道重定向输出。

–撒旦小狗
09-10-23在15:10

对于XP(默认情况下),telnet是默认安装的,但是我听说在Vista上已经不再是这种情况了?但是,不,它不允许文件下载,除非所有文件都在单个HTTP响应中返回,并且可以剥离标头并在命令行上解码内容。几乎不可能控制这一点。

– Arjan
09-10-23在15:21

为什么要安装cygwin只是为了使用wget?有一个本地的win32二进制文件可用。

– innaM
09-10-23 15:39

#13 楼

在Windows中,可以通过以下几种方式使用命令行下载:



可以使用Cygwin。

注意:附带的应用程序不是本机Linux应用程序。如果要在Windows上运行,必须从源代码重建应用程序。

可以使用telnet发出请求,但看不到任何处理。
您可以编写bat或VBS脚本。
编写可以从cmd.exe运行的程序。


#14 楼

您可以在Windows上安装Linux应用程序Wget。可以从http://gnuwin32.sourceforge.net/packages/wget.htm下载。然后,您可以在命令提示符下发出命令“ wget(在此处插入URL)”或任何其他URL,它将允许您下载该URL /文件/图像。

评论


奇怪的是,此版本并非始终兼容。在我的Windows 7计算机上不是因为缺少库。您通常希望在没有任何额外库的情况下使用wget。 users.ugent.be/~bpuype/wget

–sinni800
2011年5月16日在12:17

#15 楼

如果您安装了python,则这里有一个示例,该示例从Web上获取get-pip.py

python -c "import urllib; urllib.urlretrieve ('https://bootstrap.pypa.io/get-pip.py', r'C:\python27\Tools\get-pip.py')"


#16 楼

从Windows 10版本17063和更高版本开始,现在包含“ Curl”,因此您可以直接从Cmd.exe或PowerShell.exe执行它。
例如:
C:\>curl.exe -V
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: 2017-11-14, security patched: 2019-11-05
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

要下载文件:
curl.exe -O https://cdn.sstatic.net/Sites/superuser/Img/logo.svg


#17 楼

在默认Windows中,您无法通过HTTP下载。 Windows是一个以GUI为中心的操作系统,因此它缺少您在其他操作系统中可以找到的许多命令行工具,例如wget,它是最主要的选择。

System.Net.WebClient.DownloadFile()WiniNet API中的函数,可以下载文件,但我不确定与批处理文件相比,您进入实际开发的距离有多远。

评论


我知道可以使用wget,但是我的问题是没有使用非标准的Windows utils。

–罗伯特·马萨(Robert Massa)
09-10-23在15:09