Как переименовать файлы в выбранной папке, используя папку каталога и выбранную папку, используя Applescript - PullRequest
0 голосов
/ 26 января 2020

Я хочу запустить скрипт, который переименовывает файлы в выбранной папке, беря имя папки каталога выбранной папки и 2-е слово из выбранной папки и добавляя номер последовательности в конец файла. name.

Вот что у меня есть, но все, что возвращается, это {}. Пожалуйста, помогите мне исправить это.

property file_count : -1

set prefix to pad(file_count as string)
tell application "Finder"
    set theSel to item 1 of (get selection)
    set parDir to name of container of theSel
    set theName to name of theSel
    set issNum to word 2 of theName
end tell
set file_count to file_count + 1

on pad(s)
    repeat while length of s < 4
        set s to ("0" & s)
    end repeat
end pad

if file_count < 10 then
    set file_count to ("00" & file_count)
else if file_count < 100 then
    set file_count to ("0" & file_count)
end if

tell application "Finder"
    set theName to parDir & " " & issNum & "-" & file_count
    set theSubs to every file in theSel
    repeat with I from 1 to count of theSubs
        set name of every file of item I of theSubs to theName & ".jpg"
    end repeat
end tell

theName результат "(имя файла каталога) 001-000"

Заранее спасибо l0g0p7

Отредактируйте:

в соответствии с некоторыми примерами до и после для именования файлов

До: 08-GenerationX-1.jpg После: Поколение X -001-000.jpg

(результат получается из родительского каталога выбранной папки «Поколение X», второе слово в выбранной папке - «-001», а затем суффикс последовательности нумерации, начинающийся с 000 плюс расширение файла)

1 Ответ

0 голосов
/ 28 января 2020

Внимание! Пожалуйста, проверьте этот скрипт на копии ваших файлов, а не на оригиналах. Массовое переименование файлов - это PITA, который можно отменить, если вы допустили ошибку; намного проще выбросить ошибку и сделать новую копию из исходного набора.

Этот скрипт должен делать то, что вы хотите (я думаю). Он берет второе слово из имени выбранной папки, имя ее родительской папки и объединяет их с индексом для переименования файлов в папке. В строке 5 он проверяет, что файлы отсортированы по имени перед переименованием, чтобы сохранить порядок файлов. Дайте мне знать, как это работает.

set file_index to 0

tell application "Finder"
    set selected_folder to item 1 of (get selection)
    set selected_folder_path to POSIX path of (selected_folder as alias)
    set files_to_rename to (sort files of selected_folder by name) as alias list
end tell

tell application "System Events"
    set partition_directory to name of container of folder selected_folder_path
    set section_name to name of folder selected_folder_path
    set iss_number to word 2 of section_name

    repeat with a_file in files_to_rename
        set new_file_name to partition_directory & " " & iss_number & "-" & my zeroPad(file_index) & ".jpg"
        set name of a_file to new_file_name
        set file_index to file_index + 1
    end repeat
end tell

on zeroPad(a_num)
    return text -4 through -1 of ("0000" & a_num as string)
end zeroPad

Ps Я переделал вашу подпрограмму заполнения нулями с чем-то более эффективным. Я также переключил вещи в System Events.app, где это возможно. Искатель имеет тенденцию склеивать вещи.

...