タスクスケジューラから日次で実行し、以下一連の処理を自動で実行するPowerShellスクリプトを作成しました。
元となるファイルが1種類の場合は問題なく動作したように見えますが、2種類以上の場合に上手く動作しません。スクリプトを記載致しましたので、修正案をご教示いただけると助かります。
<処理概要>
①フォルダA内のcsvファイルをzipで圧縮する
C:\folderA\aaa.csv → C:\folderA\aaa.zip
②圧縮したファイルをフォルダBに移動
C:\folderA\aaa.zip → D:\folderB\aaa.zip
③フォルダA内の元ファイル(未圧縮のcsv)を削除する
C:\folderA\aaa.csv
④移動先(フォルダB)に圧縮ファイルが11個以上あればタイムスタンプが一番古いファイルを削除
(常に最新10世代のみファイルが保管されている状態とする)
<作成スクリプト>
//フォルダA内のファイル名(拡張子なし)を取得 $src = Get-ChildItem -Name C:\folderA $file = [System.IO.Path]::GetFileNameWithoutExtension("$src") //①、②の処理 Compress-Archive -Path C:\folderA\*.* -DestinationPath C:\folderB\$file //③の処理 Remove-Item C:\folderA\*.* //④の処理 $a = (Get-ChildItem C:\folderB | ? { ! $_.PsIsContainer }).Count if($a -gt 10){ Get-ChildItem C:\folderB | Sort-Object LastWriteTime -Descending | Select-Object -Skip 10 | foreach{Remove-Item $_.FullName} }
よろしくお願い致します。