2017-01-26 278 views
1

我嘗試製作一個腳本,以減小文件夾中圖像的大小。但我總是有一個錯誤信息。 我必須在同一個文件夾和子文件夾中縮小文件大小PowerShell - 減小圖像大小

您能幫我建立我的腳本嗎?

預先感謝您。

下面是腳本:

$source = "U:\TEST\Compression\images" 
$exclude_list = "(Imprimerie|Photos)" 

$source_listephotos = Get-ChildItem $source -Recurse | where {$_.FullName -notmatch $exclude_list} 

foreach ($source_photos in $source_listephotos) { 

$source_photos 

Resize-Image -InputFile $source_photos.FullName -Scale 30 -OutputFile (Join-Path $source $source_photos.Name) -Verbose 

} 

而且這裏的錯誤消息:

Exception calling "Save" with "1" argument(s): "A generic error occurred in GDI+." 
At C:\windows\system32\windowspowershell\v1.0\Modules\Resize-Image\Resize-Image.psm1:70 char:9 
+   $img2.Save($OutputFile); 
+   ~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : ExternalException 

回答

1

您正在使用(我認爲)的Resize-Image模塊。

報告的問題是路徑的文件格式不受支持。

沒有進一步的數據,我假設你將一個完整的對象傳遞給OutputFile。要解決此問題,請嘗試指定Name屬性。

$source = "U:\TEST\Compression\images" 
$destination = "U:\TEST\Compression\image_resizer" 
$exclude_list = @("*Imprimerie","*Photos*") 

$source_listephotos = Get-ChildItem $source -Exclude $exclude_list -Recurse 

foreach ($source_photos in $source_listephotos) { 
    Resize-Image -InputFile $source_photos.FullName -Scale 30 -OutputFile (Join-Path $destination $source_photos.Name) -Verbose 
} 

正如其他答案所述,InputFile也應該改變。

+0

謝謝您的幫助。 我可以縮小圖像的大小嗎?修改腳本修改圖片擴展名。 – pcarrey

+0

對不起,這是我,我在$ source中犯了一個錯誤。 – pcarrey

+0

我有其他問題。我必須排除一些帶有照片的文件夾,但參數-exclude不起作用。我該怎麼辦? – pcarrey

0

使用$ source_photos.fullname即

... Resize-Image -InputFile $($source_photos.fullname) -Scale .... 
+0

謝謝您的回答 – pcarrey