PDA

View Full Version : Consolidating files with applescript




iostream.h
May 7, 2005, 06:13 PM
I have tons of files in a bunch of subdirectories within a main directory. I'd like to preserve this hierarchy, but would also like to have access to these files in one chunk as aliases in another folder. Would this be possible with applescript? And if so, what would be the best way to go about it?

EDIT: Also, would it be possible to have this folder of aliases dynamically update after running the script by itself?



HexMonkey
May 7, 2005, 10:21 PM
You could use this script to create the initial aliases:

tell application "Finder"
--Get source and destination folders
set sourceFolder to choose folder with prompt "Please choose a source folder for the files"
set destinationFolder to choose folder with prompt "Please choose a destination folder for the aliases"
set theItems to every item of sourceFolder

--Iterate through the items in sourceFolder
repeat
set nextItem to first item of theItems

--First check that the item is not destinationFolder so that we don't make aliases of the aliases
if (nextItem as string is not destinationFolder as string) then
if ((class of nextItem) is folder) then
--The item is a folder, so add its files to the end of the array
set theItems to theItems & every item of nextItem
else
--The item is a file, so make an alias of it in destinationFolder
tell application "Finder" to make alias to nextItem at destinationFolder
end if
end if

--Remove the item from the array, or exit from the loop if it's the last item
if ((count of theItems) is 1) then
exit repeat
else
set theItems to items 2 thru (count of theItems) of theItems
end if
end repeat
display dialog "Finished created aliases" buttons "OK" default button 1 with icon 1
end tell

Having the folder of aliases automatically update would be quite complicated though. Firstly you'd need to attach a folder action to the source folder that creates aliases when items are added to the folder. It would also have to find and delete an alias when items are removed from the folder. Finally, it would have to automatically add/remove the folder action to/from its subfolders, since folder actions aren't recursive.