Я ищу помощь с дополнением к большему сценарию Apple, я видел много похожих запросов, но ни один из них не полностью соответствовал всем требованиям, поэтому, если кто-нибудь может помочь или направить меня к ответу, это будет огромная помощь,

Я хочу следовать этой общей предпосылке

«Выбрать имя» ответ по умолчанию «» установить для ChosenName текст, возвращаемый из результата

Установите для ImagesFolder значение (выберите папку с запросом «Выбрать папку с изображениями:») `

То, с чем я борюсь

Если ImagesFolder содержит папку с именем «Набор изображений 1», просмотрите папку «Набор изображений 1» и переименуйте содержимое, используя эту логику.

Если имя файла совпадает с 0001_ переименовать файл в ChosenName & «front»

Если имя файла совпадает с 0002_, переименовать файл в ChosenName & «Назад»

Если имя файла совпадает с 0003_ переименовать файл в ChosenName & «Top»

Если имя файла совпадает с 0004_ переименовать файл в ChosenNamet & «Bottom»

Еще

Если ImagesFolder содержит папку с именем «Image Set 2», просмотрите папки images 2 и переименуйте содержимое, используя эту логику.

Если имя файла совпадает с 0001_, переименовать файл в ChosenName & «F»

Если имя файла совпадает с 0002_, переименовать файл в ChosenName & «B»

Если имя файла совпадает с 0003_ переименовать файл в ChosenName & «T»

Если имя файла совпадает с 0004_, переименовать файл в ChosenNamet & «B»

(Уникальные символы, которые я использую для идентификации этих файлов, всегда являются последними символами, если это помогает)

Спасибо P

0
JdG 23 Ноя 2018 в 01:11

1 ответ

Лучший ответ

Этот сценарий делает то, что вам нужно. Вам нужно расширить его, чтобы также управлять папкой «Набор изображений 2» и ее расширением, но будет довольно легко просто скопировать то, что находится внутри блока Tell «Finder».

Поскольку у вас есть несколько папок, я использовал подпрограмму для обработки вашей папки, каждый раз вызывая новое правило. Например, первое правило - обработать «Набор изображений 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

С помощью этой структуры вы можете добавить столько правил, сколько захотите!

Конечно, я предполагаю, что вы никогда не получите два одинаковых имени в подпапке! Это не относится к набору изображений 2, где у вас будет 2 файла с новым именем = ChosenNameB: это приведет к ошибке !!

0
pbell 24 Ноя 2018 в 08:37