業務で日々発生するファイル管理。その中で「今日作成されたファイルが何件あるかを知りたい」と思うことはありませんか?
PowerShellを使えば、そんなニーズにもスクリプトでスマートに対応できます。本記事では、PowerShellのGet-Date
を用いて「本日作成されたファイルの数をカウントする方法」をわかりやすく解説します。初心者でも理解しやすいように、基本構文から実践例まで丁寧に紹介します。
PowerShellは、Windows環境に標準搭載されているタスク自動化・構成管理用のシェルです。コマンドプロンプトとは異なり、オブジェクト指向の強力な仕組みを持ち、スクリプトによる処理の自動化が得意です。
今回扱うのは、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)を代入先ほどのスクリプトに.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)
を使うことで、柔軟に日付範囲を設定できます。
対処法:-Path
で指定したフォルダが存在するか確認してください。存在しないフォルダを指定すると、ファイル一覧を取得できません。
Test-Path "C:\Your\Target\Folder"
で確認可能です。
対処法: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-Date
とGet-ChildItem
を組み合わせれば、「本日作成されたファイル数のカウント」が簡単に実現できます。ファイル管理の自動化や定期レポート作成などに活用すれば、業務効率もぐっと向上するでしょう。
本記事で紹介した基本スクリプトはさまざまな場面に応用可能です。ぜひ、自身の環境や用途に合わせてカスタマイズしてみてください。