2017-02-09 6 views
1

TIFFイメージのバッチをJPEGに変換する必要があります。 ImageMagickをインストールせずにプレーンなバニラPowerShellで行うことはできますか?TIFFイメージを名前を変更したJPEGに変換するPowershellスクリプト

少しの研究herehereの後、やっているようです。まず、.NET Frameworkアセンブリをロードすることによって:

[Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”); 

しかし、私は、別のディレクトリに変換した画像を保存するファイル名の最初の4つの文字を削除し、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」)'関数ではなく、ファイル名に '' {}スクリプトブロックを渡しているが。これらの中かっこは括弧で囲む必要があります。 $ .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で)通常1を通じて波括弧を置き換えます。

希望があります

+0

あなたと@TessellatingHecklerが指摘しているように、カッコをかっこで置き換える必要がありました。名前を変更する構文を変更する必要がありますが、変換が完了しています。 – oavaldezi

0

私はものを説明しながら1つのライナーが好きではありません。
このスクリプトは、新しいファイル名のために必要な.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 
関連する問題