Consolidating files with applescript

Discussion in 'Mac Programming' started by iostream.h, May 7, 2005.

  1. iostream.h macrumors regular

    Mar 4, 2004
    Albuquerque, NM
    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?
  2. HexMonkey Administrator


    Staff Member

    Feb 5, 2004
    New Zealand
    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
    		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
    				--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
    			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.

Share This Page