PowershellとImagemagickで複数の画像ファイルを一括変換する

まずはImagemagickをインストールします。

www.imagemagick.org

Get-ChildItemで変換したいファイルを取得します。

PS C:\Users\user1\Documents\> $imgs = Get-ChildItem -Path *.png

ファイルの拡張子を変えるには[io.path]::ChangeExtension()というのがあるらしいです。

PS C:\Users\user1\Documents\> [io.path]::ChangeExtension("test.png", "gif")
test.gif

ファイルオブジェクトからファイル名を取り出すには、Name属性を見ます。

PS C:\Users\user1\Documents\> $imgs[0].Name
test1.png

これをforeachループで回せばOKです…と思ったらなにかエラーが出ます。

PS C:\Users\user1\Documents\> foreach ($img in $imgs) {
>>   $gif = [io.path]::ChangeExtension($img.Name, "gif")
>>   convert $img $gif
>> }
無効なパラメーターです - test1.gif
無効なパラメーターです - test2.gif
無効なパラメーターです - test3.gif

と思ったら、どうもWindowsには別のconvertがあるので、magickという名前のコマンドになっているみたいです。ということで以下でOK

PS C:\Users\user1\Documents\> foreach ($img in $imgs) {
>>   $gif = [io.path]::ChangeExtension($img.Name, "gif")
>>   magick $img $gif
>> }