Categories: powershell

PowerShellで本日作成されたファイルをカウントする方法:Get-Dateの活用術

業務で日々発生するファイル管理。その中で「今日作成されたファイルが何件あるかを知りたい」と思うことはありませんか?
PowerShellを使えば、そんなニーズにもスクリプトでスマートに対応できます。本記事では、PowerShellのGet-Dateを用いて「本日作成されたファイルの数をカウントする方法」をわかりやすく解説します。初心者でも理解しやすいように、基本構文から実践例まで丁寧に紹介します。


PowerShellとは?

PowerShellは、Windows環境に標準搭載されているタスク自動化・構成管理用のシェルです。コマンドプロンプトとは異なり、オブジェクト指向の強力な仕組みを持ち、スクリプトによる処理の自動化が得意です。

今回扱うのは、Get-Dateコマンドレットとファイルのメタデータ(作成日時)を活用し、特定の日付に作成されたファイルを数える処理です。


Get-Dateコマンドの基本

Get-Dateは、現在の日付と時刻を取得するためのコマンドレットです。以下のように使います。

Get-Date

これを実行すると、現在のシステム時刻が表示されます。たとえば、

2025年6月26日 13:45:02

といった形式で出力されます。

特定の日付形式に変換する場合は、-Formatオプションが便利です。

Get-Date -Format "yyyy-MM-dd"

出力例:

2025-06-26

本日作成されたファイルを検出するには?

本題に入ります。PowerShellでは、Get-ChildItemを使ってファイル一覧を取得し、それぞれのCreationTime(作成日時)を比較することで、今日作られたファイルを特定できます。

まずは基本構文から確認しましょう。

$today = (Get-Date).Date
Get-ChildItem -Path "C:\Your\Target\Folder" -File | Where-Object {
$_.CreationTime -ge $today
}

このスクリプトは次のように動作します:

  • $todayに、日付のみの現在日時(00:00:00)を代入
  • 指定フォルダ内のファイルをすべて取得
  • それぞれのファイルについて、作成日時が本日($today)以降のものをフィルタリング

ファイル数をカウントするには?

先ほどのスクリプトに.Countを追加することで、対象ファイルの件数を取得できます。

$today = (Get-Date).Date
$path = "C:\Your\Target\Folder"
$count = (Get-ChildItem -Path $path -File | Where-Object {
$_.CreationTime -ge $today
}).Count

Write-Output "本日作成されたファイル数: $count 件"

このようにすれば、処理結果としてファイル数を表示することが可能です。


実用例:ログファイルの集計に活用

たとえば、ログファイルが日々出力されるディレクトリで、本日分のログ数を集計したいケースを考えてみましょう。

$today = (Get-Date).Date
$logFolder = "C:\Logs"
$todayLogs = Get-ChildItem -Path $logFolder -Filter "*.log" -File | Where-Object {
$_.CreationTime -ge $today
}

Write-Output "本日出力されたログファイル: $($todayLogs.Count) 件"

このように.logファイルに限定することで、不要なファイルを除外できます。


応用:過去〇日以内のファイルもカウントする

さらに柔軟な対応として、「過去3日以内に作成されたファイル数を知りたい」というニーズに応じたコードは以下のようになります。

$daysAgo = (Get-Date).AddDays(-3)
$path = "C:\Your\Target\Folder"
$count = (Get-ChildItem -Path $path -File | Where-Object {
$_.CreationTime -ge $daysAgo
}).Count

Write-Output "過去3日以内に作成されたファイル数: $count 件"

AddDays(-3)を使うことで、柔軟に日付範囲を設定できます。


よくあるエラーとその対処法

エラー1:パスが見つかりません

対処法-Pathで指定したフォルダが存在するか確認してください。存在しないフォルダを指定すると、ファイル一覧を取得できません。

Test-Path "C:\Your\Target\Folder"

で確認可能です。

エラー2:アクセス権限がない

対処法:PowerShellを「管理者として実行」し、アクセス権限のあるフォルダに限定して処理を行いましょう。


スケジュール実行で自動化する

タスクスケジューラを使えば、毎日自動的にスクリプトを実行して結果をログに保存することも可能です。

$today = (Get-Date).Date
$path = "C:\Logs"
$count = (Get-ChildItem -Path $path -File | Where-Object {
$_.CreationTime -ge $today
}).Count
Add-Content -Path "C:\Report\logcount.txt" -Value "$(Get-Date): $count 件"

このようにすれば、毎日ログファイル数を記録する仕組みが構築できます。


まとめ

PowerShellのGet-DateGet-ChildItemを組み合わせれば、「本日作成されたファイル数のカウント」が簡単に実現できます。ファイル管理の自動化や定期レポート作成などに活用すれば、業務効率もぐっと向上するでしょう。

本記事で紹介した基本スクリプトはさまざまな場面に応用可能です。ぜひ、自身の環境や用途に合わせてカスタマイズしてみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。