2017-02-09 93 views
1

我需要將批量的TIFF圖像轉換爲JPEG。它可以用普通的香草PowerShell來完成,無需安裝ImageMagick?Powershell腳本將TIFF圖像轉換爲重命名的JPEG

經過一番研究herehere,似乎可以做到。首先,通過加載.NET Framework程序集:

[Reflection.Assembly]::LoadWithPartialName(「System.Windows.Forms」); 

但因爲我節省了轉換後的圖像在不同的目錄,刪除了文件名稱的前四個字符,以及更改擴展到JPG,我與語法:

Get-ChildItem *.tif | %{ $file = new-object System.Drawing.Bitmap($_.FullName); $file.Save({ Join-Path "C:\Users\oscar\Downloads\" ($_.Name -replace '^.{4}(.*?)', '$1.jpg') },"JPEG") } 

我得到一個「無效字符的路徑名稱」錯誤。

+0

'.Save({這裏隨機碼}, 「JPEG」)'是傳遞一個腳本塊'{}'的功能,而不是文件名。這些大括號需要加括號。 '$ file.Save((Join-Path「C:\ Users \ oscar \ Downloads \」($ _。Name -replace'^。{4}(。*?)','$ 1.jpg')),「 JPEG「) – TessellatingHeckler

回答

0

我不確定您的問題是位於轉換還是創建新的文件名。如果文件名稱創建是問題,您可以嘗試以下步驟。例如:

PS C:\temp> "test.txt" -replace "txt", "somethingOther" 

在你的情況:

Get-ChildItem -Include *.tif | %{ $file = new-object System.Drawing.Bitmap($_.FullName); $file.Save((Join-Path "C:\Users\oscar\Downloads\" ($_.Name -replace "tif", 'jpg')),"JPEG") } 

我也換成大括號通過正常的一個(在Join-Path)。

希望有幫助

+0

正如你和@TessellatingHeckler指出的那樣,大括號需要用括號來代替。仍然需要修改重命名語法,但轉換已經完成。 – oavaldezi

0

我不喜歡一個襯墊,而解釋的東西。
該腳本包括爲新的文件名需要.substring(4)

[void] [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
$DestDir = "C:\Users\oscar\Downloads\" 
$SrcDir = "X:\test\path" 
PushD $SrcDir 
Get-ChildItem *.tif | 
    ForEach-Object{ 
    $NewFileName = (Join-Path $DestDir ($_.BaseName.SubString(4)+'.jpg')) 
    $Picture = new-object System.Drawing.Bitmap($_.FullName) 
    $Picture.Save($NewFileName ,"JPEG") 
    } 
PopD