Finderで選択中のファイルすべてに対して、親フォルダ名、親+1階層のフォルダ名を反映させたファイル名をつけるAppleScriptです。
Blogアーカイブ本を作るのに、こうした道具を作って使っています。一度書いておけば、2度目からは大幅に時間を短縮できます。最初のファイルから拡張子を取得してそれを後続のファイルすべてに適用するため、同一種類のファイルである必要があります。自分用のツールならではの手抜きといったところでしょうか。
AppleScript名:BlogアーカイブのMarkdown書類をリネーム。親、親+1階層フォルダをMM, YYYYとみなして反映 .scptd |
— Created 2020-01-18 by Takaaki Naganoya — 2020 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" –選択ファイルを取得 tell application "Finder" set aSel to selection as alias list –Select documents to Rename end tell set aCount to 10 –start set aStep to 10 set aDigit to 3 –パス情報を取得 set aFirst to first item of aSel set aPOSIX to POSIX path of aFirst set aPathStr to (current application’s NSString’s stringWithString:aPOSIX) set aDateComList to aPathStr’s pathComponents() –ディレクトリごとにパス情報を分割してリスト化 set aExt to aPathStr’s pathExtension() –拡張子 set aYear to (item -3 of aDateComList) as string –親の親フォルダ名 set aMonth to (item -2 of aDateComList) as string –親フォルダ名 –リネーム(数百項目を超える場合にはFinderでは遅すぎるのでNSFileManagerで処理) tell application "Finder" repeat with i in aSel set aTEXT to numToZeroPaddingStr(aCount, aDigit, "0") of me –3 digit set aName to aYear & aMonth & aTEXT & "." & aExt set name of i to aName set aCount to aCount + aStep end repeat end tell –整数の値に指定桁数ゼロパディングして文字列で返す on numToZeroPaddingStr(aNum as integer, aDigit as integer, paddingChar as text) set aNumForm to current application’s NSNumberFormatter’s alloc()’s init() aNumForm’s setPaddingPosition:(current application’s NSNumberFormatterPadBeforePrefix) aNumForm’s setPaddingCharacter:paddingChar aNumForm’s setMinimumIntegerDigits:aDigit set bNum to current application’s NSNumber’s numberWithInt:aNum set aStr to aNumForm’s stringFromNumber:bNum return aStr as text end numToZeroPaddingStr |