【PowerShell】更新日、またはメディアの撮影日を厳選にファイル名をリネームするスクリプト

更新日、またはメディアの撮影日を厳選にファイル名をリネームするスクリプト

自宅のファイルサーバの写真の名前を統一しようと、フリーソフトのツールを使ったが

一部の写真(3gpファイル、MOVファイル)の名前が統一できなかった。

そこで、PowerShellの勉強を兼ねて作成したもの

PowerShell初心者なので自分のコードに無駄も多いことはご愛敬

しかし、PowerShellってなかなかいいスクリプトだったんだ!

この時間のできた時こそスキルアップのため勉強しよう!

 

 

#取得フォーマット YYYY-MM-DD-H-M-00-連番  連番は当該関数をコールする度にカウントアップ
function Get更新日String([string]$FilePath, [string]$Extension, [ref]$連番){

#echo $FolderPath
#write-host $FilePath
#write-host $連番.value
#write-host $連番.value.ToString(“0000”)
#$連番.value = $連番.value + 1
#write-host $連番.value.ToString(“0000”)

# ファイルの指定
$File =$script:Folder.parseName($FilePath)

# 詳細プロパティの取得 いずれかを利用する
#$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 = “\\192.168.x.x\photo\”

# シェルオブジェクトを作成(スクリプト内でグローバル利用する)
$script:Shell = New-Object -ComObject Shell.Application

# フォルダの指定(スクリプト内でグローバル利用する)
$script:Folder = $Shell.NameSpace($FolderPath)

#指定パスへ移動
cd $FolderPath

#ファイル名を取得
#Get-ChildItem * -Recurse -Filter “*.jpg” | Select-Object Name, Extension #取得結果確認(デバッグ)

#”0001-*.3gp” の指定を変更すると、対象ファイルを変更できる
$3gpFiles = Get-ChildItem * -Filter “0001-*.3gp” | Select-Object Name, Extension
foreach ($OldName in $3gpFiles) {
write-host $OldName.Name
$NewFileName = Get更新日String $OldName.Name $OldName.Extension ([ref]$連番)
write-host $NewFileName

# ファイル名を変更する。 今回処理するファイル名には、一律の通番を振るのでかぶらない
Rename-Item -Path $OldName.Name -NewName $NewFileName

}

#例 MOVファイル当、他のもあった場合は、上記処理を丸ごとコピーし ”0001-*.MOV” を変更する。
$3gpFiles = Get-ChildItem * -Filter “0001-*.MOV” | Select-Object Name, Extension
foreach ($OldName in $3gpFiles) {
write-host $OldName.Name
$NewFileName = Get更新日String $FolderPath $OldName.Name $OldName.Extension ([ref]$連番)
write-host $NewFileName

# ファイル名を変更する。 今回処理するファイル名には、一律の通番を振るのでかぶらない
Rename-Item -Path $OldName.Name -NewName $NewFileName

}

 

コメント

タイトルとURLをコピーしました