下载文件名(日期)每周更改的播客

时间:2018-12-09 12:39:28

标签: regex powershell download mp3

我希望能够下载每周发布的.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

1 个答案:

答案 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'
  1. .NET WebClient

    (New-Object System.Net.WebClient).DownloadFile($downloadUrl, $outputFile)
    
  2. Invoke-WebRequest

    Invoke-WebRequest -Uri $downloadUrl -OutFile $outputFile
    
  3. Start-BitsTransfer

    Import-Module BitsTransfer  
    Start-BitsTransfer -Source $downloadUrl -Destination $outputFile