ログファイルを1ファイルずつ圧縮するPowerShellのサンプルコード

記事内に広告が含まれています。
《スポンサーリンク(広告)》

※エンジニアは英語必須!業界初の定額レッスン無制限!オンラインで英語を学習しませんか?

《スポンサーリンク(広告)》

ログファイルを1ファイルずつ圧縮するPowerShellのサンプルを紹介します。

ローカルの開発環境で日別のログファイルが溜まってきたときに、1ファイルずつ圧縮をスクリプトで一括でやりたいときに便利です。

《スポンサーリンク(広告)》

coconalaはロゴデザイン、Webマーケティング、副業のあらゆるスキルのマーケットです(ビジネス・個人問わないサービス)

《スポンサーリンク(広告)》

仕様

今回作成するスクリプトの仕様を説明します。

動作仕様

下記のようなフォルダで考えてみます。

日時別のlogファイルと、その他のファイルが雑多に混じっています。

フォルダ内のlogファイルのみ1つずつ圧縮されます。

ソースコード

ソースコードは下記のとおりです。

$currentPathはlogファイルが存在するパスです。

適当に変えてください。

ログファイル圧縮.ps1

$currentPath = "C:\temp\powershell\file\"

#作業フォルダ移動
Set-Location -Path $currentPath

#フォルダのファイル一覧取得
$items = Get-ChildItem * -File -include *.log
#ファイルごとにループ
foreach ($item in $items) {

    #ログファイル名
    $currentName = $item.Name
    #圧縮ファイル名
    $archiveName = $currentName.Substring(0, $currentName.LastIndexOf('.')) + ".zip"

    #既存ファイル有無確認
    if (Test-Path $archiveName) {

        Write-Output "圧縮ファイルが既に存在します:" + $archiveName

    }else{

        #ファイル圧縮
        Compress-Archive -Path $currentName -DestinationPath $archiveName -ErrorAction Stop
        Write-Output "圧縮ファイルが既に存在します:" + $archiveName

        #ログファイル削除
        Remove-Item $currentName -ErrorAction Stop
    }
}
Read-Host

実行手順

では実行してみましょう。

先ほどのスクリプトPowerShell Script Codeを、拡張子*.ps1として保存し実行します。

実行は右クリックメニュー「PowerShellで実行」で実行します。

実行前

実行前は日時別のlogファイルと、その他のファイルが雑多に混じって格納されています。

実行後

実行後はlogファイルのみが圧縮できているのが確認できました。

参考情報

環境

下記の環境で作成・実行しております。

No.環境バージョン
1OSWindows10
2PowerShell5.1
環境一覧

以上です。

コメント

タイトルとURLをコピーしました