もちろんです!以下のPowerShellスクリプトを使用して、カレントディレクトリにあるYYYYMMDD_HHMMSS
形式のjpgファイル名を、HHに9時間足した形式のYYYYMMDDHHMMSS_i.jpg
に変更することができます。
# カレントディレクトリに移動
Set-Location -Path "カレントディレクトリのパス"
# jpgファイルを取得
$files = Get-ChildItem -Filter "*.jpg"
# ファイル名の置換処理
foreach ($file in $files) {
if ($file.Name -match "(\\\\d{8})_(\\\\d{2})(\\\\d{2})(\\\\d{2})") {
$date = $matches[1]
$hour = [int]$matches[2] + 9
$minute = $matches[3]
$second = $matches[4]
# 24時間以上になった場合の処理(必要に応じて日付を変更)
if ($hour -ge 24) {
$hour = $hour - 24
$date = (Get-Date ([datetime]::ParseExact($date, "yyyyMMdd", $null).AddDays(1)) -Format "yyyyMMdd")
}
# 新しいファイル名を作成
$newName = "{0}{1:D2}{2}{3}_i.jpg" -f $date, $hour, $minute, $second
# ファイル名を置換
Rename-Item -Path $file.FullName -NewName $newName
}
}
このスクリプトでは、ファイル名を正規表現で解析し、HHに9時間を加えた新しいファイル名を作成して置換しています。もしHH
に9時間加えて24時間を超えた場合、日付を1日加算し、時間を24時間から引いた値にしています。
実行する際には、Set-Location -Path "カレントディレクトリのパス"
の部分を適切なディレクトリに変更してください。
もちろんです!以下のスクリプトに、リネームの際にコンソールにメッセージを表示する処理を追加しました。
# カレントディレクトリに移動
Set-Location -Path "カレントディレクトリのパス"
# jpgファイルを取得
$files = Get-ChildItem -Filter "*.jpg"
# ファイル名の置換処理
foreach ($file in $files) {
if ($file.Name -match "(\\\\d{8})_(\\\\d{2})(\\\\d{2})(\\\\d{2})") {
$date = $matches[1]
$hour = [int]$matches[2] + 9
$minute = $matches[3]
$second = $matches[4]
# 24時間以上になった場合の処理(必要に応じて日付を変更)
if ($hour -ge 24) {
$hour = $hour - 24
$date = (Get-Date ([datetime]::ParseExact($date, "yyyyMMdd", $null).AddDays(1)) -Format "yyyyMMdd")
}
# 新しいファイル名を作成
$newName = "{0}{1:D2}{2}{3}_i.jpg" -f $date, $hour, $minute, $second
# リネームのメッセージを表示
Write-Output ("Rename 「{0}」 -> 「{1}」" -f $file.Name, $newName)
# ファイル名を置換
Rename-Item -Path $file.FullName -NewName $newName
}
}
このスクリプトでは、Rename 「旧ファイル名」 -> 「新ファイル名」
というメッセージをコンソールに表示するために、Write-Output
コマンドを使用しています。この方法で、各ファイルがリネームされる際に、その情報が表示されるようになります。実行する際には、Set-Location -Path "カレントディレクトリのパス"
の部分を適切なディレクトリに変更してください。