【问题标题】:Is there a way to use wildcards when downloading and saving a file using Powershell?使用 Powershell 下载和保存文件时,有没有办法使用通配符?
【发布时间】:2020-02-18 09:59:12
【问题描述】:

我有一个 PowerShell 脚本,我每天早上都用它从 URL 下载文件,但是它每天都开始在上面加上日期,因此不可能每天使用预定的 PowerShell 来下载它。

有没有办法使用通配符来获取所有日期?

$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile("https://test.com/store/scheduled/320%2019.10.22.csv","\\server\shared\Reports\RawData\Cross Selling Data.csv")

粗体部分是我在“320”之后寻找通配符的内容,因为这是报告编号,但在 .csv 之前。我试过 * 但这似乎不起作用。日期在每天的报告中明显变化。

【问题讨论】:

  • “因此不可能每天使用预定的 PowerShell 来下载它” 并非如此,如果它始终是当前日期,您可以将该日期添加到 URL 之前下载。
  • 另外,对于下载文件,您可以使用本机 Invoke-WebRequest cmdlet,您不必为此求助于 .NET 方法。

标签: powershell url download wildcard webclient


【解决方案1】:

当谈到使用通配符时,答案是。发出 Web 请求时不可能使用通配符,因为它需要检查所有可能的路径。

如果您知道模式,则可以通过编程方式构建路径。例如,在你的情况下

# That input
PS> Get-Date -Format 'yy.MM.dd'
# Gives you the following result
19.10.22

它看起来类似于您在代码中包含的模式(我假设 %20 是空格)。要在字符串中使用它(假设您使用双引号 "),您可以使用以下内容:

"https://test.com/store/scheduled/320%20$(Get-Date -Format 'yy.MM.dd').csv"

最后但同样重要的是,正如 cmets 中提到的@TomalakInvoke-WebRequest 也可能对您有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多