ファイルを更新日付ごとにフォルダ分けするPowerShellのサンプルコード

PowerShell
記事内に広告が含まれています。

大量格納されたファイルを更新日付ごとにフォルダ分けする、PowerShellスクリプトのサンプルを紹介します。

仕様

フォルダに格納されたファイルを更新日付ごとに、サブフォルダに格納します。

実行イメージ

下記のファイルの例だと、4/17のファイルが1つ、2/25のファイルが4つ格納されています。

この場合は各ファイルが、フォルダ「20220417」、フォルダ「20220225」へ割り振りされます。

ソースコード

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

$currentPathは日付ごとにフォルダ分けしたいファイルが存在するパスです。

適当に変えてください。

更新日付ごとにフォルダ分け.ps1

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

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

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

    #フォルダ名作成(年月日)
    $newFolder = $item.LastWriteTime.ToString("yyyyMMdd")

    #既存フォルダ有無確認
    if ( -not (Test-Path $newFolder) ) {

        #新フォルダ作成
        New-Item $newFolder -ItemType Directory

    }

    #ファイル移動
    Move-Item $item $newFolder
}
Read-Host

実行手順

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

先ほどのソースコードを、拡張子*.ps1として保存し実行します。

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

実行すると下記のような画面が出るので、そのままエンターを押下でよいです。

実行前

実行前はフォルダがなく、ファイルのみが置かれたフォルダ構成です。

実行後

実行後は日付ごとにフォルダが作成され、ファイルがフォルダに格納されています。

フォルダの中はどうでしょうか?

20220225フォルダ

20220417フォルダ

問題なさそうです。

参考情報

環境

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

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

以上です。