このサムのような小さな挑戦が好きです。彼らは私にとって楽しいです...多分私は病気です;)。とにかく、あなたが要求したようにファイル名をきれいにするハンドラを書きました。テキスト項目の区切り記号などに慣れていれば、AppleScript でテキストを操作するのはそれほど難しくありません。これらの小さな課題が、私のテキスト スキルを鋭く保ちます。
注: nameList プロパティでは、名前は、ピリオドまたは番号シーケンス DxxPxx の文字 D の直前にある任意の文字で終了する必要があります。
だからこれを試してみてください。さまざまなファイル名をプラグインして、希望どおりに機能することを確認します。もちろん、nameList および nameReplaceList プロパティにもさらに値を設定する必要があります。
property nameList : {"Yellowst.Nat.Park."}
property nameReplaceList : {"Yellowstone National Park"}
set fileName to "Yellowst.Nat.Park.D12P55.DMS.3248.jpg"
cleanFilename(fileName)
(*================ SUBROUTINES ================*)
on cleanFilename(fileName)
-- first find the base name and file extension of the file name
set tids to AppleScript's text item delimiters
set ext to ""
if fileName contains "." then
set AppleScript's text item delimiters to "."
set textItems to text items of fileName
set ext to "." & item -1 of textItems
set baseName to (items 1 thru -2 of textItems) as text
set text item delimiters to ""
else
set baseName to fileName
end if
-- next find the pattern D, 2 numbers, P, and 2 numbers in the baseName
set chars to characters of baseName
set theSequence to missing value
repeat with i from 1 to (count of chars) - 6
set thisChar to item i of chars
if thisChar is "d" and item (i + 3) of baseName is "p" then
try
set firstNum to text (i + 1) thru (i + 2) of baseName
firstNum as number
set secondNum to text (i + 4) thru (i + 5) of baseName
secondNum as number
set theSequence to text i through (i + 5) of baseName
exit repeat
end try
end if
end repeat
-- now make the changes
if theSequence is not missing value then
set AppleScript's text item delimiters to theSequence
set theParts to text items of baseName
set fixedFirstPart to item 1 of theParts
repeat with i from 1 to count of nameList
if item i of nameList is fixedFirstPart then
set fixedFirstPart to item i of nameReplaceList
exit repeat
end if
end repeat
set fixedName to fixedFirstPart & " [" & firstNum & "x" & secondNum & "]" & ext
else
set fixedName to fileName
end if
set AppleScript's text item delimiters to tids
return fixedName
end cleanFilename
ファイルでいっぱいのフォルダーに対してこれを自動化したい場合は、このコードを使用できます。上記のスクリプトの 3 行目と 4 行目をこれに置き換えるだけです。私はこのコードをチェックしませんでしたが、そのままで十分に動作するはずです。
注: 非画像ファイルがこのコードで選択したフォルダーにあるかどうかを心配する必要はありません。これらのファイルには DxxPxx 番号シーケンスがないため (私はこれを想定しています)、このスクリプトはそれらを変更しません。仕方。
set theFolder to choose folder
tell application "Finder"
set theFiles to files of theFolder
repeat with aFile in theFiles
set thisName to name of aFile
set newName to my cleanFilename(thisName)
if newName is not thisName then
set name of aFile to newName
end if
end repeat
end tell