Batch file 通过批处理文件将文件下载到某个位置

Batch file 通过批处理文件将文件下载到某个位置,batch-file,Batch File,我有一些api链接(基本上是URL)。点击这些API后,将下载zip文件 这是否可能,我可以写在一个批处理文件中,并自动下载到我的系统中的某个特定位置。另外,我想让这个进程充当后台进程。实际上batch能够下载文件,但它确实很混乱。我宁愿使用powershell。下面是我制作的一个脚本,它可以下载一个文件,甚至可以显示进度: function downloadFile($url, $targetFile) { "Downloading $url" $uri = New-Objec

我有一些api链接(基本上是URL)。点击这些API后,将下载zip文件


这是否可能,我可以写在一个批处理文件中,并自动下载到我的系统中的某个特定位置。另外,我想让这个进程充当后台进程。

实际上batch能够下载文件,但它确实很混乱。我宁愿使用powershell。下面是我制作的一个脚本,它可以下载一个文件,甚至可以显示进度:

function downloadFile($url, $targetFile)
{
    "Downloading $url"
    $uri = New-Object "System.Uri" "$url"
    $request = [System.Net.HttpWebRequest]::Create($uri)
    $request.set_Timeout(15000)
    $response = $request.GetResponse()
    $totalLength = [System.Math]::Floor($response.get_ContentLength()/1024)
    $responseStream = $response.GetResponseStream()
    $targetStream = New-Object -TypeName System.IO.FileStream -ArgumentList $targetFile, Create
    $buffer = new-object byte[] 10KB
    $count = $responseStream.Read($buffer,0,$buffer.length)
    $downloadedBytes = $count
    while ($count -gt 0)
    {
        [System.Console]::CursorLeft = 0
        [System.Console]::Write("Downloaded {0}K of {1}K", [System.Math]::Floor($downloadedBytes/1024), $totalLength)
        $targetStream.Write($buffer, 0, $count)
        $count = $responseStream.Read($buffer,0,$buffer.length)
        $downloadedBytes = $downloadedBytes + $count
    }
    "`nFinished Download"
    $targetStream.Flush()
    $targetStream.Close()
    $targetStream.Dispose()
    $responseStream.Dispose()
}

downloadFile "URL" "target_file"

您只需通过添加源和目标来修改最后一行。

您可以在Powershell中执行此操作,但如果您能够在Microsoft Windows之外安装某些软件,则还有许多替代方案。wget和curl等工具是众所周知的。在这里搜索一下很好。但是如果网站使用Windows身份验证,我怎么还能下载文件呢?我需要能够下载任何客户系统上使用此脚本。你能用$username、$password更新它吗?