Этот скрипт делает то, что вам нужно.Вам необходимо расширить его, чтобы он также управлял папкой «Набор изображений 2» и ее именем расширения, но будет достаточно легко просто скопировать то, что находится внутри блока Tell «Finder».
Поскольку у вас несколько папок, я использовал подпрограмму для обработки вашей папки, каждый раз вызывая новое правило.Например, 1-е правило заключается в обработке «набора изображений 1, поиск 0001 0002 0003 0004 и замене каждого из них на передний, задний, верхний, нижний.
Правило 2 заключается в обработке» набора изображений 2, найдите 0001,0002,0003,0004 и замените каждый на F, B, T, B.
Первая часть строит правила.Сам скрипт сводится к циклу по каждому правилу, вызывая подпрограмму «Process_SubFolder» с 3 переменными: имя подпапки, текущие цели и новые имена.
(*
Define record Rule, made of 3 variables :
NFolderNFolder: the name of sub-folder
NSource : the list of part of file names to be processed
NDest : the list of new names. This list MUST count same number of items as NSource
All rules are added into ListRules
*)
global ChosenName, ImagesFolder -- mandatory to use in the sub-routine
set Rule to {NFolder:"Image Set 1", NSource:{"0001", "0002", "0003", "0004"}, NDest:{"Front", "Back", "Top", "Bottom"}}
set ListRules to {Rule}
set Rule to {NFolder:"Image Set 2", NSource:{"0001", "0002", "0003", "0004"}, NDest:{"F", "B", "T", "B"}}
set ListRules to ListRules & {Rule}
set R to display dialog "Enter a name" default answer ""
set ChosenName to text returned of R
if ChosenName is "" then return -- no name selected, end of script
set ImagesFolder to choose folder with prompt "Choose Images Folder:"
repeat with aRule in ListRules
Process_SubFolder(NFolder of aRule, NSource of aRule, NDest of aRule)
end repeat
-- end of main script
on Process_SubFolder(LFolder, LSource, LDest)
tell application "Finder"
set SubFolder to (ImagesFolder as string) & LFolder
if folder SubFolder exists then
set FileList to every file of folder SubFolder -- get all files of Images Set 1
repeat with aFile in FileList -- loop through each file
set FName to name of aFile
set NewName to ""
-- Manage extension of the file
if name extension of aFile is "" then
set NewExt to ""
else
set NewExt to "." & name extension of aFile
end if
repeat with I from 1 to count of LSource --loop trhough each source of the rule
if FName contains (item I of LSource) then set NewName to ChosenName & (item I of LDest) & NewExt
end repeat
if NewName is not "" then set name of aFile to NewName -- only if name must be changed !
end repeat -- loop through files of LFolder
end if -- folder exists
end tell
end Process_SubFolder
С помощью этой структуры вы можетедобавьте столько правил, сколько хотите!
Конечно, я предполагаю, что вы никогда не получите дважды одинаковые имена в подпапке!Это не так в Image Set 2, где у вас будет 2 файла с новым именем = ChosenNameB: это создаст ошибку !!