首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于每天更改文件名的PowerShell DownloadFile

用于每天更改文件名的PowerShell DownloadFile
EN

Stack Overflow用户
提问于 2022-05-24 05:19:14
回答 2查看 61关注 0票数 1

以下代码可从网站下载文件:https://www.mcafee.com/enterprise/en-us/downloads/security-updates.html

正在下载的文件

但是,文件名每天都在更改。例如:“今日”(mediumepo4981dat.zip)和“昨日(mediumepo4980dat.zip)”。

我如何创建一个脚本,我可以每天运行,这是动态的?

代码语言:javascript
复制
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$uri = "https://download.nai.com/products/datfiles/med/mediumepo4981dat.zip"
$filename = "C:\DownloadTest\mediumepo4981dat.zip"
$wc = New-Object System.Net.WebClient
$wc.UseDefaultCredentials = $true
$wc.DownloadFile($uri, $filename)

如果您需要进一步的澄清,请告诉我。

注意:寻找没有调用-WebRequest的解决方案,因为这在我当前的环境中是行不通的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-24 07:58:39

代码语言:javascript
复制
$uri  = [uri] "https://download.nai.com/products/datfiles/med"
$wr   = Invoke-WebRequest $uri
$file = $wr.ParsedHtml.getElementsByTagName('a') |
    Select-Object -Last 1 -ExpandProperty TextContent
$toDownload = [uri]::new($uri, $file)

在$uri中缺少尾随'/‘。它应该是

代码语言:javascript
复制
  $uri  = [uri] "https://download.nai.com/products/datfiles/med/"
票数 1
EN

Stack Overflow用户

发布于 2022-05-24 05:40:51

似乎我们可以假设最后列出的文件总是最新的,不能确认这是否总是正确的--它可能会在某个时候发生变化。目前,您可以通过以下方式获得最后一个文件:

代码语言:javascript
复制
$uri  = [uri] "https://download.nai.com/products/datfiles/med"
$wr   = Invoke-WebRequest $uri
$file = $wr.ParsedHtml.getElementsByTagName('a') |
    Select-Object -Last 1 -ExpandProperty TextContent
$toDownload = [uri]::new($uri, $file)

现在,您可以将其与脚本的其余部分结合起来:

代码语言:javascript
复制
$filename = Join-Path 'C:\DownloadTest\' -ChildPath $file
$wc = New-Object System.Net.WebClient
$wc.UseDefaultCredentials = $true
$wc.DownloadFile($toDownload.AbsoluteUri, $filename)

请注意,这将只在Windows中工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72357535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档