わずか4フォルダほどリネームしたいフォルダがあったので、ChatGPTさんに作って貰いました。
ファイルやフォルダに含まれる文字列を他の文字列に置換するだけのスクリプトです。
自分はスクリプトメニューに登録して使う予定ですが、Automatorから作れば右クリックの「サービス」から使用することもできるかと思います。
もっと大量にリネームするファイルがある場合や、複雑なリネームの場合には、有料ですが ちゃちゃっとリネーマー がオススメです!
Windowsでは定番で無料の Flexible Renamer を使用していましたが、Windowsの方にはこちらもオススメです。
記事内容もChatGPTさん作成↓
今回は、AppleScriptを使ってFinderで選択したファイルやフォルダの名前をリネームする方法をご紹介します。特定の文字列を置換し、同名ファイルが存在した場合には印を付ける処理を行います。
スクリプトの概要
このスクリプトでは、以下の処理を行います:
- Finderで選択したファイルやフォルダの名前を取得。
- 置換対象の文字列と置換後の文字列をダイアログから入力。
- 置換後、同名ファイル・フォルダがあった場合に、名前の末尾に印をつける。
同名ファイル・フォルダが存在する場合は、"_renamed" という印を名前に付与します。これにより、内容が異なることを示唆できます。
AppleScriptのコード
property previousSearchString : ""
property previousReplaceString : ""
-- Finderで選択したファイルやフォルダの名前を取得
tell application "Finder"
set selectedItems to selection
if length of selectedItems is 0 then
display dialog "ファイルやフォルダが選択されていません。" buttons {"OK"} default button "OK"
return
end if
end tell
-- 使用できない文字を確認する関数
on hasInvalidCharacters(inputString)
set invalidCharacters to {":", "/", "?", "<", ">", "\\", "*", "|", "\""} -- macOSで使用できない文字
repeat with i from 1 to length of invalidCharacters
if inputString contains item i of invalidCharacters then return true
end repeat
return false
end hasInvalidCharacters
-- 前回の置換パターンを確認し、置換対象の文字列を取得
set searchString to previousSearchString
repeat
set searchString to text returned of (display dialog "置換したい文字列を入力してください。" default answer previousSearchString)
if searchString is "" then
display dialog "文字列が入力されていません。" buttons {"OK"} default button "OK"
else if hasInvalidCharacters(searchString) then
display dialog "使用できない文字列が含まれています。" buttons {"OK"} default button "OK"
else
set previousSearchString to searchString
exit repeat
end if
end repeat
-- 置換後の文字列を取得
set replaceString to previousReplaceString
repeat
set replaceString to text returned of (display dialog "置換後の文字列を入力してください。" default answer previousReplaceString)
if hasInvalidCharacters(replaceString) then
display dialog "置換後の文字列に使用できない文字が含まれています。" buttons {"OK"} default button "OK"
else
set previousReplaceString to replaceString
exit repeat
end if
end repeat
-- 置換処理フラグ
set replacementMade to false
-- ファイル・フォルダ名の置換処理
tell application "Finder"
repeat with selectedItem in selectedItems
set itemName to name of selectedItem
if itemName contains searchString then
set newName to my replaceText(searchString, replaceString, itemName)
-- 同名のファイルやフォルダが存在するか確認
try
set name of selectedItem to newName
on error
-- 同名ファイル・フォルダがある場合
display dialog "同名のファイルまたはフォルダが存在します: " & newName
set newName to newName & "_renamed" -- 名前に _renamed を付与
set name of selectedItem to newName
end try
set replacementMade to true
end if
end repeat
end tell
-- 処理終了のダイアログ
display dialog "リネームが終わりました"
-- 置換対象がなかった場合の処理
if not replacementMade then
display dialog "置換対象の文字列が選択されたファイルやフォルダに見つかりませんでした。" buttons {"OK"} default button "OK"
return
end if
-- 文字列置換の関数
on replaceText(searchString, replaceString, inputString)
set AppleScript's text item delimiters to searchString
set textItems to text items of inputString
set AppleScript's text item delimiters to replaceString
set replacedString to textItems as text
set AppleScript's text item delimiters to ""
return replacedString
end replaceText
ヒント: AppleScriptを使用することで、Finderの操作を自動化し、簡単にリネーム処理を行うことができます。同名ファイルに対する対応をきちんと考えることが、効率的なファイル管理につながります。