PowerShellを使用して、ファイルの更新日やメディアの撮影日を元にファイル名を統一・リネームするスクリプトです。
この記事でできること
写真や動画ファイル(.jpg, .3gp, .MOVなど)のファイル属性から「更新日」または「メディアの撮影日」を取得し、YYYY-MM-DD-HH-MM-00-連番 形式のファイル名へ一括でリネームします。ファイル名がバラバラになってしまったファイル群の整理に便利です。
前提条件
- Windows環境(PowerShellが実行可能なこと)
Shell.ApplicationCOMオブジェクトを利用するため、Windowsのエクスプローラー機能に依存します。
スクリプト全体
# 取得フォーマット: YYYY-MM-DD-HH-MM-00-連番
# 連番は関数を呼び出すたびにカウントアップします
function Get更新日String([string]$FilePath, [string]$Extension, [ref]$連番){
# ファイルの指定
$File = $script:Folder.parseName($FilePath)
# 詳細プロパティの取得(208: メディアの撮影日, 3: 更新日)
# $GET = $script:Folder.GetDetailsOf($File, 208)
$GET = $script:Folder.GetDetailsOf($File, 3)
Write-Host $Get
$a = $GET.Replace("/", "-")
$b = $a.Replace(":", "-")
$c = $b.Replace(" ", "-")
$d = $c + "-00" # 秒がないため00秒を固定で付与
$e = $連番.value.ToString("-0000")
$連番.value++ # インクリメント
$f = $d + $e + $Extension
return $f
}
# 開始連番を指定
$連番 = 1
# ターゲットのファイルパスを指定
$FolderPath = "C:\path\to\photo\"
# シェルオブジェクトを作成(スクリプト内でグローバル利用)
$script:Shell = New-Object -ComObject Shell.Application
# フォルダの指定
$script:Folder = $Shell.NameSpace($FolderPath)
# 指定パスへ移動
Set-Location $FolderPath
# 3gpファイルの処理例
$TargetFiles = Get-ChildItem * -Filter "*.3gp"
foreach ($OldName in $TargetFiles) {
Write-Host $OldName.Name
$NewFileName = Get更新日String $OldName.Name $OldName.Extension ([ref]$連番)
Write-Host $NewFileName
Rename-Item -Path $OldName.Name -NewName $NewFileName
}
使い方と注意点
$FolderPath 変数に対象となるフォルダのパスを設定し、PowerShellコンソールで実行してください。対象の拡張子やフィルター条件を変更することで、様々なファイル形式に対応可能です。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月12日
- 変更コードブロックがblockquoteタグ内にテキストとして露出していた問題を修正し、適切なコード表示に改善しました。
- 追加スクリプトの前提条件と実行手順の解説を追加しました。

