我问,除了浏览器和其他软件以外,还有什么其他方法可以从互联网上下载文件,我认为使用CMD(命令行)批处理脚本是可行的吗? 更准确地说,使用一个窗口(让说7)组件来下载一个文件没有像vbs,hta,..等等对话框是可能的? 我不想下载wget,curl,telnet或其他组件这将在Windows 7上工作? http://semitwist.com/articles/article/view/downloading-files-from-plain-batch-with-zero-dependencies
试试这个例子在VBScript:
Option Explicit Dim URL,ws,fso,Srcimage,Temp,PathOutPutHTML,fhta,stRep,stFichier,oShell,oFolder,oFichier,Dimensions Dim arrSize,intLength,intHorizontalSize,intVerticalSize,Tab URL = "http://img.zgserver.com/windows/animated-tunisia-flag-image-0023.gif" Set ws = CreateObject("wscript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") Temp = WS.ExpandEnvironmentStrings("%Temp%") PathOutPutHTML = Temp & "\image.hta" Set fhta = fso.OpenTextFile(PathOutPutHTML,2,True) stRep = Temp Tab = split(url,"/") stFichier = Tab(UBound(Tab)) Srcimage = stRep & "\" & stFichier If Not fso.FileExists(Srcimage) Then Call DownloadingFile(URL,Srcimage) Set oShell = CreateObject("Shell.Application") Set oFolder = oShell.Namespace(stRep) Set oFichier = oFolder.Items.Item(stFichier) Dimensions = oFolder.GetDetailsOf(oFichier,31) arrSize = Split(Dimensions,"x") '***************************************Important à savoir ********************************************** 'Instead, we ended up retrieving item 31, which gave us the total dimensions of the picture, 'using an output format similar to this: ?150 x 354? 'http://blogs.technet.com/b/heyscriptingguy/archive/2008/05/16/how-can-i-search-a-folder-for-all-the-image-files-that-are-not-a-specified-height-and-width.aspx 'Un grand merci à omen999 ==> 'http://www.developpez.net/forums/d1504644/autres-langages/general-visual-basic-6-vbscript/vbscript/passage-variables-procedure/#post8163406 intLength = Len(arrSize(0)) intHorizontalSize = Right(arrSize(0),intLength -1) intLength = Len(arrSize(1)) intVerticalSize = Left(arrSize(1),intLength - 1) '***************************************Important à savoir ********************************************** Call LoadImage(Srcimage,intHorizontalSize,intVerticalSize,Timeout(51)) ws.run "mshta.exe " & PathOutPutHTML Else Set oShell = CreateObject("Shell.Application") Set oFolder = oShell.Namespace(stRep) Set oFichier = oFolder.Items.Item(stFichier) Dimensions = oFolder.GetDetailsOf(oFichier,31) arrSize = Split(Dimensions,"x") intLength = Len(arrSize(0)) intHorizontalSize = Right(arrSize(0),intLength -1) intLength = Len(arrSize(1)) intVerticalSize = Left(arrSize(1),intLength - 1) Call LoadImage(Srcimage,intHorizontalSize,intVerticalSize,Timeout(51)) ws.run "mshta.exe " & PathOutPutHTML End If '******************************************************************************************************** Function TimeOut(T) TimeOut = T * 1000 End Function '******************************************************************************************************** Sub LoadImage(Srcimage,intHorizontalSize,intVerticalSize,TimeOut) fhta.WriteLine "<html>" fhta.WriteLine " <hta:application id=""oHTA"" " fhta.WriteLine " border=""none"" " fhta.WriteLine " caption=""no"" " fhta.WriteLine " contextmenu=""no"" " fhta.WriteLine " innerborder=""no"" " fhta.WriteLine " scroll=""no"" " fhta.WriteLine " showintaskbar=""no"" " fhta.WriteLine " />" fhta.WriteLine "<style>" fhta.WriteLine "{ margin: 0; padding: 0; }" fhta.WriteLine "body {background: url(" & DblQuote(Srcimage) & ") no-repeat center center fixed;}" fhta.WriteLine "</style>" fhta.WriteLine " <script language=""VBScript"">" fhta.WriteLine " Sub Window_OnLoad()" fhta.WriteLine " width = " & intHorizontalSize fhta.WriteLine " height = " & intVerticalSize fhta.WriteLine " window.resizeTo width, height" fhta.WriteLine " window.moveTo screen.availWidth\2 - width\2, screen.availHeight\2 - height\2" fhta.WriteLine " idTimer = window.setTimeout(""vbscript:window.close"","& TimeOut &")" fhta.WriteLine " window.setInterval ""setfocus()"",100" fhta.WriteLine " End Sub" fhta.WriteLine " Function setfocus" fhta.WriteLine " Window.Focus()" fhta.WriteLine " End Function" fhta.WriteLine " </script>" fhta.WriteLine "<body>" fhta.WriteLine "<bgsound src=""http://hackoo.alwaysdata.net/Tunisie.mp3"">" fhta.WriteLine "</body>" fhta.WriteLine "</html>" End Sub '********************************************************************************************** Function DblQuote(Str) DblQuote = Chr(34) & Str & Chr(34) End Function '********************************************************************************************** Sub DownloadingFile(URL,strHDLocation) Dim Titre,objFSO,Ws,objXMLHTTP,PathScript,Tab,objADOStream,Command,Start,File Dim MsgTitre,MsgAttente,StartTime,DurationTime,ProtocoleHTTP Set objFSO = Createobject("Scripting.FileSystemObject") Set Ws = CreateObject("wscript.Shell") ProtocoleHTTP = "http://" If Left(URL,7) <> ProtocoleHTTP Then URL = ProtocoleHTTP & URL End if Tab = split(url,"/") File = Tab(UBound(Tab)) File = Replace(File,"%20"," ") File = Replace(File,"%28","(") File = Replace(File,"%29",")") Set objXMLHTTP = CreateObject("MSXML2.serverXMLHTTP.3.0") strHDLocation = PathScript & "\" & File On Error Resume Next objXMLHTTP.open "GET",URL,false objXMLHTTP.send() If Err.number <> 0 Then MsgBox err.description,16,err.description Exit Sub Else If objXMLHTTP.Status = 200 Then strHDLocation = Temp & "\" & File 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 objADOStream.SaveToFile strHDLocation,2 '2=adSaveCreateOverWrite objADOStream.Close Set objADOStream = Nothing End If End if Set objXMLHTTP = Nothing End Sub
并可能是另一个样本在这里: VBS /批量检查下载完成
批量不能本地下载文件。
要从命令行下载文件,您必须使用第三方工具,如cURL或wget。
Linux的:
wget http://somedomain.com/somefile.xxx
如果您使用的是Windows,请下载一个名为wget.exe
的exe( 这里 ),您将可以使用上面的代码。
PowerShell很容易做到这一点; 不过,即使Windows 7中包含了一个版本,您也可能需要下载最新版本。
在Windows 7或Windows 8(及相关服务器版本)中,您可以将驱动器映射到WebDAV文件夹,并使用COPY,XCOPY或ROBOCOPY来表达内容。 如果您愿意,可以使用命令行NET USE映射驱动器。
例如,NET USE S:https:\ live.sysinternals.com(或使用PUSHD),并跟进您的复制命令。
干杯!
您可以尝试使用PowerShell的 Vbscript下载并执行该文件。 所以在这个例子中,我们下载了一个mp3文件,然后播放它。
Option Explicit Dim MyCmd,Ws,Ret Set Ws = CreateObject("wscript.Shell") MyCmd = "cmd /c Powershell.exe -ExecutionPolicy bypass -noprofile -WindowStyle Hidden (New-Object System.Net.WebClient).DownloadFile('http://hackoo.alwaysdata.net/Matrix.mp3','%TEMP%\Matrix.mp3'); Start-Process %TEMP%\Matrix.mp3;" Ret = Ws.run(MyCmd,0,True)