我希望能够下载每周发布的.MP3播客,我有一个可以下载文件的有效脚本,问题是文件名每周更改(日期在文件名中)>
news-2018-12-09.mp3,
news-2018-12-16.mp3,
新闻-2018-12-23.mp3。
这是我的代码:
# Start IE and navigate to your download file/location
$ie = New-Object -Com internetExplorer.Application
$ie.Navigate("<address>2018-12-09.mp3")
# Wait for Download Dialog box to pop up
Sleep 5
while ($ie.Busy) {Sleep 1}
# Hit "S" on the keyboard to hit the "Save" button on the download box
$obj = New-Object -Com WScript.Shell
$obj.AppActivate('Internet Explorer')
$obj.SendKeys('s')
# Hit "Enter" to save the file
$obj.SendKeys('{Enter}')
# Closes IE Downloads window
$obj.SendKeys('{TAB}')
$obj.SendKeys('{TAB}')
$obj.SendKeys('{TAB}')
$obj.SendKeys('{Enter}')
是否存在特定的Regex序列来检查和文件名,下载当前的序列,并且可能在保存文件时将其另存为news-current.mp3
?
答案 0 :(得分:0)
如果您知道文件的格式始终为news-
+当前日期+ .mp3
,那么构造它就不难了。
像$fileName = 'news-{0}.mp3' -f (Get-Date -Format 'yyyy-MM-dd')
这样的东西。
关于下载文件的方法,我认为有比使用Internet Explorer Com对象更好的方法。
$address = '<PUT THE URL FOR THE DOWNLOAD IN HERE>'
$fileName = 'news-{0}.mp3' -f (Get-Date -Format 'yyyy-MM-dd')
$downloadUrl = '{0}/{1}' -f $address, $fileName
$outputFile = Join-Path -Path $PSScriptRoot -ChildPath 'news-current.mp3'
(New-Object System.Net.WebClient).DownloadFile($downloadUrl, $outputFile)
Invoke-WebRequest -Uri $downloadUrl -OutFile $outputFile
Import-Module BitsTransfer
Start-BitsTransfer -Source $downloadUrl -Destination $outputFile