下载并打开一系列图片网址

时间:2018-04-12 18:17:56

标签: windows powershell windows-7

我要做的是从网址下载2张图片,然后在下载后打开它们。这就是我所拥有的:

@echo off
set files='https://cdn.suwalls.com/wallpapers/cars/mclaren-f1-gtr-42852-400x250.jpg','http://www.dubmagazine.com/home/media/k2/galleries/9012/GTR_0006_EM-2014-12-21_04_GTR_007.jpg'
powershell "(%files%)|foreach{$fileName='%TEMP%'+(Split-Path -Path $_ -Leaf);(new-object System.Net.WebClient).DownloadFile($_,$fileName);Invoke-Item $fileName;}"

我得到'无法找到驱动器'无法找到名为“https”的驱动器。

这是Split-path命令遇到问题但似乎无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

你可以通过基本的字符串操作来逃避但是,如果该选项可用,我会选择使用任何其他可识别数据的东西。在您的情况下,您可以使用[uri]类型加速器来帮助解决这些问题。我也会选择纯PowerShell,而不是在批处理和PS之间拆分。

$urls = 'https://cdn.suwalls.com/wallpapers/cars/mclaren-f1-gtr-42852-400x250.jpg',
    'http://www.dubmagazine.com/home/media/k2/galleries/9012/GTR_0006_EM-2014-12-21_04_GTR_007.jpg'

$urls | ForEach-Object{
    $uri = [uri]$_
    Invoke-WebRequest $_ -OutFile ([io.path]::combine($env:TEMP,$uri.Segments[-1]))
}

细分将为您提供网址的最后一部分,这是您的正确文件名。 Combine()将为您构建目标目标路径。当然可以随意添加调用项目逻辑。

如果无法访问url或者没有访问url,这也缺少错误处理。所以要注意这种可能性。上面的代码意味着简短的指示。