Invoke-WebRequest -OutFile <filename>,文件名中包含通配符

时间:2017-10-05 16:26:11

标签: windows powershell

如何在Invoke-WebRequest的-OutFile参数中引用通配符?

$filename = "Image[1].jpg"
$uri = [System.Uri]"http:/url/to/image.jpg"
Invoke-WebRequest -Uri $uri -OutFile $filename 

这段代码给了我一个例外:

Cannot perform operation because the wildcard path Image[1].jpg did not resolve to a file.

Technet

  

这里有两点需要注意。首先,我们将路径名称括在单引号中。这不是强制性的,但它使我们的命令在眼睛上更容易一些。 (正如你将在一分钟内看到的那样)。其次,我们需要在方括号前加上两个后面的刻度字符(``);这告诉PowerShell我们希望将左方括号视为常规字符而不是通配符。就像我们说的那样,它看起来很疯狂,但它确实有效:

$filename = 'Image``[1``].jpg'

给我:

Cannot perform operation because the wildcard path Image``[1``].jpg did not resolve to a file.

将文件名更改为

$filename = "Image``[1``].jpg"

不会生成异常,但保存文件的名称为

Image`[1`].jpg

我很想更改文件名,但要求它们在下载时保持相同的名称。

关于如何使这项工作的任何想法?

THX

1 个答案:

答案 0 :(得分:2)

不是优雅的解决方案:

$filename = 'c:\temp\Image(1).jpg'
$uri = [System.Uri]"http://www.google.fr"
Invoke-WebRequest -Uri $uri -OutFile $filename
Rename-Item $filename $filename.Replace('(', '[').Replace(')', ']')