2017-10-05 31 views
0

如何引用Invoke-WebRequest的-OutFile参数中的通配符?Invoke-WebRequest -OutFile <filename>带有文件名中的通配符

$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

+0

林困惑,为什么你需要一个OUTFILE通配符? – ArcSet

+0

这是一个已报告的问题https://github.com/PowerShell/PowerShell/issues/3174没有任何评论。声称有解决方法,但没有提及任何。 @ArcSet我不认为提问者在outfile上需要通配符... – TessellatingHeckler

+0

@ArcSet我不需要在outfile上使用通配符,但Powershell会解释任何[,],* ,?在作为通配符的路径中。 [和]是Windows文件名的合法字符,我试图下载一个包含[和]并保存文件名的文件。 –

回答

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(')', ']') 
相关问题