答案 0 :(得分:106)
使用PowerShell 2.0(预装Windows 7),您可以使用:
(New-Object Net.WebClient).DownloadFile('http://www.example.com/package.zip', 'package.zip')
从PowerShell 3.0开始(预装Windows 8),您可以使用Invoke-WebRequest
:
Invoke-WebRequest http://www.example.com/package.zip -OutFile package.zip
从批处理文件中调用它们:
powershell -Command "(New-Object Net.WebClient).DownloadFile('http://www.example.com/package.zip', 'package.zip')"
powershell -Command "Invoke-WebRequest http://www.example.com/package.zip -OutFile package.zip"
(PowerShell 2.0可在XP上安装,3.0适用于Windows 7)
答案 1 :(得分:86)
有一个标准的Windows组件可以实现您的目标:BITS。自XP和2000 SP3以来,它已包含在Windows中。
执行命令
bitsadmin.exe /transfer "JobName" http://download.url/here.exe C:\destination\here.exe
作业名称只是下载作业的显示名称 - 将其设置为描述您正在执行的操作的内容。
答案 2 :(得分:29)
这可能有点偏离主题,但您可以使用 Powershell 轻松下载文件。 Powershell附带现代版本的Windows,因此您无需在计算机上安装任何额外的东西。我通过阅读本页了解了如何做到这一点:
http://teusje.wordpress.com/2011/02/19/download-file-with-powershell/
代码是:
$webclient = New-Object System.Net.WebClient
$url = "http://www.example.com/file.txt"
$file = "$pwd\file.txt"
$webclient.DownloadFile($url,$file)
答案 3 :(得分:25)
答案 4 :(得分:11)
' Create an HTTP object
myURL = "http://www.google.com"
Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
' Download the specified URL
objHTTP.Open "GET", myURL, False
objHTTP.Send
intStatus = objHTTP.Status
If intStatus = 200 Then
WScript.Echo " " & intStatus & " A OK " +myURL
Else
WScript.Echo "OOPS" +myURL
End If
然后
C:\>cscript geturl.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
200 A OK http://www.google.com
或者只需双击它即可在Windows中进行测试
答案 5 :(得分:9)
在PURE BATCH中下载文件......
有些人说不可能在不使用任何JScript或VBScript等的情况下使用批处理脚本下载文件......但它们肯定是错误的!
这是一个简单的方法,似乎可以很好地下载批处理脚本中的文件。它应该在几乎任何文件的URL上工作。如果需要,甚至可以使用代理服务器。
要下载文件,我们可以使用Windows系统中的 BITSADMIN.EXE 。无需下载/安装任何内容或使用任何JScript或VBScript等。 Bitsadmin.exe 出现在大多数Windows版本上,可能是从XP到Windows 10。
享受!
<强> USAGE:强>
您可以直接使用BITSADMIN命令,如下所示:
bitsadmin /transfer mydownloadjob /download /priority normal "http://example.com/File.zip" "C:\Downloads\File.zip"
代理服务器:
要使用代理进行连接,请在下载前使用此命令
bitsadmin /setproxysettings mydownloadjob OVERRIDE "proxy-server.com:8080" "<local>"
如果您想了解有关BITSadmin.exe
的更多信息,请单击此LINK 自定义功能
:DOWNLOAD_FILE "URL"
:DOWNLOAD_PROXY_ON "SERVER:PORT"
:DOWNLOAD_PROXY_OFF
我使用了这三个函数来简化bitsadmin命令。它更容易使用和记忆。如果您在脚本中多次使用它,它会特别有用。
请注意......
在使用这些函数之前,首先需要将它们从CUSTOM_FUNCTIONS.CMD复制到脚本的末尾。还有一个完整的示例:DOWNLOAD-EXAMPLE.CMD
:DOWNLOAD_FILE“网址”
主要功能,将从URL下载文件。
:DOWNLOAD_PROXY_ON“SERVER:PORT”
(可选)如果需要使用代理服务器,可以使用此功能
调用:DOWNLOAD_PROXY_OFF函数将禁用它。
示例:强>
CALL :DOWNLOAD_PROXY_ON "proxy-server.com:8080"
CALL :DOWNLOAD_FILE "http://example.com/File.zip" "C:\Downloads\File.zip"
CALL :DOWNLOAD_PROXY_OFF
<强> CUSTOM_FUNCTIONS.CMD 强>
:DOWNLOAD_FILE
rem BITSADMIN COMMAND FOR DOWNLOADING FILES:
bitsadmin /transfer mydownloadjob /download /priority normal %1 %2
GOTO :EOF
:DOWNLOAD_PROXY_ON
rem FUNCTION FOR USING A PROXY SERVER:
bitsadmin /setproxysettings mydownloadjob OVERRIDE %1 "<local>"
GOTO :EOF
:DOWNLOAD_PROXY_OFF
rem FUNCTION FOR STOP USING A PROXY SERVER:
bitsadmin /setproxysettings mydownloadjob NO_PROXY
GOTO :EOF
下载-EXAMPLE.CMD 强>
@ECHO OFF
SETLOCAL
rem FOR DOWNLOADING, THIS SCRIPT IS USING THE "BITSADMIN.EXE" SYSTEM FILE.
rem IT IS PRESENT ON MOST WINDOWS VERSION, PROBABLY FROM WINDOWS XP TO WINDOWS 10.
:SETUP
rem DOWNLOADING A PICTURE (URL):
SET "FILE_URL=https://upload.wikimedia.org/wikipedia/en/8/86/Einstein_tongue.jpg"
rem SAVING FILE TO THE SCRIPT FOLDER:
SET "SAVING_TO=Einstein_tongue.jpg"
SET "SAVING_TO=%~dp0%SAVING_TO%"
rem OR, UNCOMMENT NEXT LINE FOR SAVING TO ANY OTHER PATH:
rem SET "SAVING_TO=C:\Folder\Einstein_tongue.jpg"
:MAIN
ECHO.
ECHO FILE URL: "%FILE_URL%"
ECHO SAVING TO: "%SAVING_TO%"
ECHO.
rem UNCOMENT AND MODIFY THE NEXT LINE IF YOU NEED TO USE A PROXY SERVER:
rem CALL :DOWNLOAD_PROXY_ON "PROXY-SERVER.COM:8080"
rem HERE IS THE MAIN DOWNLOADING COMMAND:
CALL :DOWNLOAD_FILE "%FILE_URL%" "%SAVING_TO%"
rem UNCOMMENT NEXT LINE FOR DISABLING ANY PROXY:
rem CALL :DOWNLOAD_PROXY_OFF
ECHO.
rem THIS IS THE END...
PAUSE
EXIT /B
rem FUNCTIONS SECTION
:DOWNLOAD_FILE
rem BITSADMIN COMMAND FOR DOWNLOADING FILES:
bitsadmin /transfer mydownloadjob /download /priority normal %1 %2
GOTO :EOF
:DOWNLOAD_PROXY_ON
rem FUNCTION FOR USING A PROXY SERVER:
bitsadmin /setproxysettings mydownloadjob OVERRIDE %1 "<local>"
GOTO :EOF
:DOWNLOAD_PROXY_OFF
rem FUNCTION FOR STOP USING A PROXY SERVER:
bitsadmin /setproxysettings mydownloadjob NO_PROXY
GOTO :EOF
答案 6 :(得分:5)
AFAIK,Windows没有内置的命令行工具来下载文件。但您可以从VBScript中执行此操作,并且可以使用echo和输出重定向从批处理生成VBScript文件:
@echo off
rem Windows has no built-in wget or curl, so generate a VBS script to do it:
rem -------------------------------------------------------------------------
set DLOAD_SCRIPT=download.vbs
echo Option Explicit > %DLOAD_SCRIPT%
echo Dim args, http, fileSystem, adoStream, url, target, status >> %DLOAD_SCRIPT%
echo. >> %DLOAD_SCRIPT%
echo Set args = Wscript.Arguments >> %DLOAD_SCRIPT%
echo Set http = CreateObject("WinHttp.WinHttpRequest.5.1") >> %DLOAD_SCRIPT%
echo url = args(0) >> %DLOAD_SCRIPT%
echo target = args(1) >> %DLOAD_SCRIPT%
echo WScript.Echo "Getting '" ^& target ^& "' from '" ^& url ^& "'..." >> %DLOAD_SCRIPT%
echo. >> %DLOAD_SCRIPT%
echo http.Open "GET", url, False >> %DLOAD_SCRIPT%
echo http.Send >> %DLOAD_SCRIPT%
echo status = http.Status >> %DLOAD_SCRIPT%
echo. >> %DLOAD_SCRIPT%
echo If status ^<^> 200 Then >> %DLOAD_SCRIPT%
echo WScript.Echo "FAILED to download: HTTP Status " ^& status >> %DLOAD_SCRIPT%
echo WScript.Quit 1 >> %DLOAD_SCRIPT%
echo End If >> %DLOAD_SCRIPT%
echo. >> %DLOAD_SCRIPT%
echo Set adoStream = CreateObject("ADODB.Stream") >> %DLOAD_SCRIPT%
echo adoStream.Open >> %DLOAD_SCRIPT%
echo adoStream.Type = 1 >> %DLOAD_SCRIPT%
echo adoStream.Write http.ResponseBody >> %DLOAD_SCRIPT%
echo adoStream.Position = 0 >> %DLOAD_SCRIPT%
echo. >> %DLOAD_SCRIPT%
echo Set fileSystem = CreateObject("Scripting.FileSystemObject") >> %DLOAD_SCRIPT%
echo If fileSystem.FileExists(target) Then fileSystem.DeleteFile target >> %DLOAD_SCRIPT%
echo adoStream.SaveToFile target >> %DLOAD_SCRIPT%
echo adoStream.Close >> %DLOAD_SCRIPT%
echo. >> %DLOAD_SCRIPT%
rem -------------------------------------------------------------------------
cscript //Nologo %DLOAD_SCRIPT% http://example.com targetPathAndFile.html
更多解释here
答案 7 :(得分:4)
从这里下载Wget http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-setup.exe
然后安装它。
然后制作一些.bat文件并将其放入其中
@echo off
for /F "tokens=2,3,4 delims=/ " %%i in ('date/t') do set y=%%k
for /F "tokens=2,3,4 delims=/ " %%i in ('date/t') do set d=%%k%%i%%j
for /F "tokens=5-8 delims=:. " %%i in ('echo.^| time ^| find "current" ') do set t=%%i%%j
set t=%t%_
if "%t:~3,1%"=="_" set t=0%t%
set t=%t:~0,4%
set "theFilename=%d%%t%"
echo %theFilename%
cd "C:\Program Files\GnuWin32\bin"
wget.exe --output-document C:\backup\file_%theFilename%.zip http://someurl/file.zip
调整脚本中的URL和文件路径
答案 8 :(得分:3)
答案 9 :(得分:3)
如果bitsadmin不是你的一杯茶,你可以使用这个PowerShell命令:
<div class="container">
<img class="img-responsive" src="http://gillespaquette.ca/images/stack-icon.png" id="viewer">
<div class="row">
<div id="left" class="col-sm-5 col-md-5 col-lg-5 col-xs-5">Left
</div>
<div id="center" class="col-sm-3 col-md-3 col-lg-3 col-xs-4">Center
</div>
<div id="right" class="col-sm-4 col-md-4 col-lg-4 col-xs-3">Right
</div>
</div>
</div>
答案 10 :(得分:3)
使用Bat To Exe Converter
创建批处理文件并将类似下面的代码放入其中
%extd% /download http://www.examplesite.com/file.zip file.zip
或
%extd% /download http://stackoverflow.com/questions/4619088/windows-batch-file-file-download-from-a-url thistopic.html
并将其转换为exe。
答案 11 :(得分:2)
BATCH可能无法执行此操作,但如果您不想使用默认情况下未安装Windows的工具,则可以使用JScript或VBScript。
此页面上的第一个示例在VBScript中下载二进制文件: http://www.robvanderwoude.com/vbstech_internet_download.php
这个SO答案使用JScript(IMO,更好的语言)下载文件: Windows Script Host (jscript): how do i download a binary file?
然后,您的批处理脚本可以调用下载该文件的JScript或VBScript。
答案 12 :(得分:2)
答案 13 :(得分:2)
这应该可以解决游戏服务器项目的问题。它将下载zip并将其解压缩到您指定的目录。
另存为 name.bat 或 name.cmd
@echo off
set downloadurl=http://media.steampowered.com/installer/steamcmd.zip
set downloadpath=C:\steamcmd\steamcmd.zip
set directory=C:\steamcmd\
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& {Import-Module BitsTransfer;Start-BitsTransfer '%downloadurl%' '%downloadpath%';$shell = new-object -com shell.application;$zip = $shell.NameSpace('%downloadpath%');foreach($item in $zip.items()){$shell.Namespace('%directory%').copyhere($item);};remove-item '%downloadpath%';}"
echo download complete and extracted to the directory.
pause
原文:https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver/blob/master/steam.cmd
答案 14 :(得分:2)
Windows上有一个实用程序(驻留在CMD中),可以从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上测试
答案 15 :(得分:1)
您可以使用wget设置计划任务,使用计划任务中的“运行”字段:
C:\wget\wget.exe -q -O nul "http://www.google.com/shedule.me"
答案 16 :(得分:1)
我找到了这个VB脚本:
像魅力一样工作。配置为具有非常简单的函数调用的函数:
SaveWebBinary "http://server/file1.ext1", "C:/file2.ext2"
最初来自:http://www.ericphelps.com/scripting/samples/BinaryDownload/index.htm
以下是冗余的完整代码:
Function SaveWebBinary(strUrl, strFile) 'As Boolean
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const ForWriting = 2
Dim web, varByteArray, strData, strBuffer, lngCounter, ado
On Error Resume Next
'Download the file with any available object
Err.Clear
Set web = Nothing
Set web = CreateObject("WinHttp.WinHttpRequest.5.1")
If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest")
If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP")
If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP")
web.Open "GET", strURL, False
web.Send
If Err.Number <> 0 Then
SaveWebBinary = False
Set web = Nothing
Exit Function
End If
If web.Status <> "200" Then
SaveWebBinary = False
Set web = Nothing
Exit Function
End If
varByteArray = web.ResponseBody
Set web = Nothing
'Now save the file with any available method
On Error Resume Next
Set ado = Nothing
Set ado = CreateObject("ADODB.Stream")
If ado Is Nothing Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(strFile, ForWriting, True)
strData = ""
strBuffer = ""
For lngCounter = 0 to UBound(varByteArray)
ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
Next
ts.Close
Else
ado.Type = adTypeBinary
ado.Open
ado.Write varByteArray
ado.SaveToFile strFile, adSaveCreateOverWrite
ado.Close
End If
SaveWebBinary = True
End Function
答案 17 :(得分:1)
这个问题在here中有很好的答案。我的代码完全基于该答案并进行了一些修改。
将以下代码段保存为 wget.bat 并将其放入系统路径(例如,将其放入目录并将此目录添加到系统路径中。)
您可以在cli中使用它,如下所示:
wget url/to/file [?custom_name]
其中url_to_file
是强制性的,custom_name
是可选的
文件网址和已保存的文件名以ansi彩色文字显示。如果这对您造成问题,请检查this github项目。
@echo OFF
setLocal EnableDelayedExpansion
set Url=%1
set Url=!Url:http://=!
set Url=!Url:/=,!
set Url=!Url:%%20=?!
set Url=!Url: =?!
call :LOOP !Url!
set FileName=%2
if "%2"=="" set FileName=!FN!
echo.
echo.Downloading: [1;33m%1[0m to [1;33m\!FileName![0m
powershell.exe -Command wget %1 -OutFile !FileName!
goto :EOF
:LOOP
if "%1"=="" goto :EOF
set FN=%1
set FN=!FN:?= !
shift
goto :LOOP
P.S。此代码要求您安装PowerShell。
答案 18 :(得分:1)
随着Windows 10的版本17063,添加了CURL实用程序。要下载文件,您可以使用:
curl "https://download.sysinternals.com/files/PSTools.zip" --output pstools.zip
将bitsadmin与宏配合使用会更容易:
set "download=bitsadmin /transfer myDownloadJob /download /priority normal"
%download% "https://download.sysinternals.com/files/PSTools.zip" %cd%\pstools.zip
为了向后兼容,您可以使用winhttpjs.bat(与此同时,您还可以执行POST,DELETE和其他http方法):
call winhhtpjs.bat "https://example.com/files/some.zip" -saveTo "c:\somezip.zip"
答案 19 :(得分:-4)
使用ftp:
(ftp *yourewebsite.com*-a)
cd *directory*
get *filename.doc*
close
更改星号中的所有内容以适合您的情况。