(Automator/AppleScript) Преименуване на файлове в име на папка, запазване в друга папка и добавяне на префикс

Наистина имам нужда от вашата помощ и ще съм много благодарен за нея. Мисля, че това не би трябвало да е проблем за вас.

Така че имам папка с различни подпапки в нея. В подпапките има изображения. Това, което ми трябва е:

  1. Променете името на всяко изображение на името на неговата подпапка + 001 и т.н.
  2. Преместете всички изображения от всички подпапки в една папка (или поне в главната папка)
  3. Добавяне на случаен префикс номер към имената.

Имам скрипт за трета задача:

tell application "Finder" 
    repeat with this_item in (get items of window 1)
        set name of this_item to ((random number from 0 to 99999) & name of this_item) as string
    end repeat 
end tell

Но работи само с отворена папка на преден план. Може би има начин да направите един скрипт, който да го изпълнява във фонов режим?

Огромно благодаря предварително.

Тук намерих страхотно приложение за автоматик, но трябва да го коригирам малко. Как да използвам името на текущата папка без път като променлива в automator в Mac?

Този скрипт прави всичко, от което се нуждая, НО преименува всички файлове в ЕДНО име на папка, а не всяко различно.

Ето друг applescript, който преименува файлове в папки, но използва 2 имена на папки (папка + подпапка) и имам нужда само от префикс на подпапка.

set myFolder to do shell script "sed 's/\\/$//' <<< " & quoted form of POSIX path of (choose folder)
set myFiles to paragraphs of (do shell script "find " & quoted form of myFolder & " \\! -name \".*\" -type f -maxdepth 2 -mindepth 2")
repeat with aFile in myFiles
    tell application "System Events" to set file aFile's name to (do shell script "sed 's/.*\\/\\([^/]*\\)\\/\\([^/]*\\)\\/\\([^/]*$\\)/\\1_\\2_\\3/' <<< " & quoted form of aFile)
end repeat  

(MacBook Pro края на 2013 г., OS X Yosemite 10.10.1)


person Vassili Bagrov    schedule 18.12.2014    source източник


Отговори (1)


Това постига това, което искате. Трябва да можете да коригирате от тук. Няма отметки за игнориране на файлове без изображения.

property top_folder : alias "Macintosh HD:Users:MyName:Downloads:Images:"
property save_folder : ""

set save_folder to choose folder with prompt "Select the folder to save the images in."
process_folder(top_folder)

on process_folder(this_folder)
    set these_items to list folder this_folder without invisibles
    set container_name to name of (info for this_folder)
    repeat with i from 1 to the count of these_items
        set this_item to alias ((this_folder as Unicode text) & (item i of these_items))
        if folder of (info for this_item) is true then
            process_folder(this_item)
        else
            process_item(this_item, container_name, i)
        end if
    end repeat
end process_folder

-- this sub-routine processes files 
on process_item(this_item, c, i)
    -- make the integer a 3 digit string
    if i < 10 then
        set i to "00" & i
    else if i < 100 then
        set i to "0" & i
    end if
    -- set a random number
    set r to (random number from 0 to 99999) as string

    tell application "System Events"
        -- get file extension so not overwritten
        set e to name extension of this_item
        set new_name to "" & r & "_" & c & "_" & i & "." & e
        set name of this_item to new_name
        move this_item to save_folder
    end tell
end process_item
person jweaks    schedule 18.12.2014
comment
ЕХА! Това е абсолютно невероятно!!! Две неща обаче: 1. има ли начин да изберете път, където да преместите всички преименувани файлове? Например, трябва да го преместя в /users/…/Downloads/Images, как да го накарам да работи? 2. как да направя първия път до главна папка с подпапки постоянен? Искам да кажа, да не декларирам пътя всеки път. - person Vassili Bagrov; 19.12.2014
comment
Редактирах сценария. Сега той пита за местоположението за запис и има твърдо кодирано свойство за най-горното ниво на папка, което можете да зададете сами в скрипта. (Последните ви въпроси са МНОГО елементарни за Applescript, така че наистина трябва да научите повече, като четете книги/примери, преди да питате всичко тук.) - person jweaks; 19.12.2014