カレントフォルダ直下の複数のサブフォルダをZIP圧縮するPowershellスクリプト

カレントフォルダ直下の複数のサブフォルダをZIP圧縮するPowershellスクリプトに関する情報になります。

 

現状すぐに使用することはなさそうですが、備忘録代わりにテクネットでいい情報があったので紹介します。

 

同様の要件がある場合に参考になると思います。

 

情報元はこちら。

複数のサブフォルダーを個々にZIPフォルダーにするScript

 

まず、参考になったのが、「Compress-Archive」コマンド自体、最大で2GBまでしか圧縮出来ない制限があるとのことなので、利用には注意が必要です。

 

そして、サブフォルダ名に空白ではなく ”[" や "]" が含まれる場合に処理が失敗するというのも参考になります。

 

 

以下回答です。

 

”[" や "]"はPowershellでは特殊な役割がある文字となるため、通常の文字として認識させる為にはエスケープ文字「`」を前に挿入する必要があります。

なので、サブフォルダーの名前に上記文字が含まれているかを判別する条件式を加えた上で、含まれる場合には「`」を文字の前に挿入する処理を加えれば、うまくいくと推測します。

ですが、サブフォルダー名に上記文字を使用しないように運用を変更する方が楽ではあると思います。

 

続いて、動作したというスクリプトです。

 

以下のスクリプトで完全に意図した動作になりました

Get-ChildItem ./ -Directory | ForEach-Object{Compress-Archive -LiteralPath $_.FullName -DestinationPath $_.Name}

 

カレントフォルダ直下の複数のサブフォルダをZIP圧縮するPowershellスクリプトが必要な場合は参考になると思います。