ツイキャス録画君で残したtxtファイルの中のタイトルを、
ファイル名に追記するバッチファイルになります。
txtファイルの中身がUTF-8のために、
batファイルだけだと処理できないため
PowerShellを使います。
ツイキャス録画君で残したファイルは、
本体のmp3とtxtの2種類になります
テキストファイルの中はこんな感じ
【ライブURL】http://twitcasting.tv/userID/movie/moiveID
【録画開始時間】2023年02月04日16時34分00秒
【ユーザー名】ユーザー名
【ユーザーID】userID
【タイトル】だだだだ
これのタイトルを取得して、txtファイルをリネームします。
Befor userID(2023年02月04日16時34分00秒).txt
After userID(2023年02月04日16時34分00秒)だだだだ.txt
まずはPowerShellのスクリプトを呼び出すbatファイル
powershell .\TitleToFileName.ps1
pause
それで本命のPowerShellのスクリプトはこんな感じです
1)実行場所のtxtファイル分ループ
2)ファイル名の(から後ろを抽出します
3)抽出した文字長が26なら、処理前なので処理する
4)ファイル名と拡張子の間にtxtファイルの5行目(0スタートなので4)を突っ込んで
5)【タイトル】を_に置換
4)リネーム
$itemList = Get-ChildItem *.txt;
foreach($item in $itemList)
{
#日付から拡張子までの長さで、タイトル追加済みを判断する
$item.Name -match "(.*.txt";
if ( 26 -eq $Matches[0].length ){
$oldFn = (Get-ChildItem $item).BaseName+(Get-ChildItem $item).Extension
$newFn = (Get-ChildItem $item).BaseName+(Get-Content -Encoding UTF8 $item)[4]+(Get-ChildItem $item).Extension
$newFn = $newFn -replace "【タイトル】","_"
write-host("処理 "+$item.Name);
Rename-Item $oldFn -NewName $newFn;
}else{
write-host("処理済 "+$item.Name);
}
}
直接mp3,mp4ファイルの方をリネームしたいときは、こんな感じです
$itemList = Get-ChildItem *.txt;
foreach($item in $itemList)
{
#日付から拡張子までの長さで、タイトル追加済みを判断する
$item.Name -match "(.*.txt";
if ( 26 -eq $Matches[0].length ){
$oldFn = (Get-ChildItem $item).BaseName+".mp3"
$newFn = (Get-ChildItem $item).BaseName+(Get-Content -Encoding UTF8 $item)[4]+".mp3"
$newFn = $newFn -replace "【タイトル】","_"
write-host("処理 "+$item.Name);
Rename-Item $oldFn -NewName $newFn;
}else{
write-host("処理済 "+$item.Name);
}
}
これで、文字コードを指定したテキストファイルの中身で、
ファイル名を処理することが簡単になりました。