Well, Hell! El Capitan wrecks my long-used Desktop Sweeper Script.
On previous systems it took 2-10 seconds to run on a fairly cluttered Desktop.
On El Capitan it bogs down on the whose-clause in the repeat and takes damn near 30 seconds to complete. That's completely unacceptable, so it looks like I'll have to take a different approach.
A number of things feel smoother and faster in the 10.11 Finder, but this is not one of them.
I expect there's an ASObjC method of doing this that is quite fast. I'm also interested to see what talking to the File Manager direct can do for the speed of moving the items.
I can also script Spotlight I reckon.
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
# dCre: 2012/09/30 16:51
# dMod: 2015/10/01 09:49
# Appl: Finder
# Task: Sweep Stuff off the desktop in an organized fashion.
# : Exclusion list.
# : Items labeled gray, green, or red are excluded.
# Libs: Only OSX components used.
# Osax: None
# Tags: @Applescript, @Finder, @Sweep, @Desktop
# Vers: 1.01
-------------------------------------------------------------------------------------------
property defaultWindowPositionY : 23 -- El Capitan
-------------------------------------------------------------------------------------------
property exlusionList : items 1 thru -2 of {¬
"Access", ¬
"Action List", ¬
"bak", ¬
"Catch All", ¬
"dd PerlDmp", ¬
"Desk Notes", ¬
"Kinesiology", ¬
"Links", ¬
"ll test.pl", ¬
"Meta", ¬
"OSX Notes", ¬
"Pending", ¬
"Proj Notes", ¬
"Ref Files", ¬
"sa Scripts", ¬
"ss Scr-Shot", ¬
"Sweep", ¬
"Swept", ¬
"TEST.ws", ¬
"Working", ¬
""}
-------------------------------------------------------------------------------------------
# Separation between file-extensions & folder name must be at least 5 spaces.
# Multiple file-extensions MUST be separated by one space.
property fileExtFilters : text 2 thru -2 of "
dmg Disk_Images
flv mov mp4 Movie_Files
gif jpg png Image_Files
rtf rtfd RTF_Files
scpt Script_Files
sit zip Compressed_Archives
txt Text_Files
textClipping Clipping_Files
webarchive Web_Archives
webbookmark webloc Web_Bookmarks
worksheet BBEdit_Worksheets
"
-------------------------------------------------------------------------------------------
try
set AppleScript's text item delimiters to {""}
set desktopFolder to path to desktop folder
set cleanupFolder to (path to documents folder as text) & "Sweep Desktop:"
set cleanList to {}
set repositionDesktopIcons to alias ((path to scripts folder as text) & "Applications:Finder:Desktop { Reposition Desktop Items }.scpt")
try
alias cleanupFolder
on error
do shell script "mkdir " & (quoted form of (POSIX path of cleanupFolder))
end try
set usefileExtFilters to do shell script "sed -E 's![ ]{5,}!" & tab & "!' <<< " & quoted form of fileExtFilters
set AppleScript's text item delimiters to tab
tell application "Finder"
tell desktop
# ••••• Super-Slow in El Capitan •••••
# Create move-to record with file-extension filters.
repeat with i in (paragraphs of usefileExtFilters)
set _temp to {words of first text item, last text item} of contents of i
set itemsToMove to (items whose kind is not "Volume" and name is not in exlusionList and ¬
name does not start with "Swept " and name extension is in (item 1 of _temp) and ¬
label index is not in {2, 6, 7}) as alias list
if itemsToMove ≠ {} then
set end of cleanList to {File_List:itemsToMove, Sub_Folder:item 2 of _temp}
end if
end repeat
# ••••••••••••••••••••••••••••••••••••
# Add folders to move-to record if appropriate.
set itemsToMove to (folders whose kind is not "Volume" and name is not in exlusionList and ¬
name does not start with "Swept " and label index is not in {2, 6, 7}) as alias list
if itemsToMove ≠ {} then
set end of cleanList to {File_List:itemsToMove, Sub_Folder:"Folders"}
end if
# return cleanList --» •••••
if cleanList ≠ {} then
# Make new Clean-up Folder
set dateTimeString to do shell script "date \"+%Y %m/%d %H.%M\""
set newFolderName to "Swept " & dateTimeString
set newFolder to make new folder at (cleanupFolder as alias) with properties {name:newFolderName}
set label index of newFolder to 2
set _alias to make alias to newFolder at it
set label index of _alias to 2
# Move items in move-to record.
repeat with ndx in cleanList
set _folder to (make new folder at newFolder with properties {name:Sub_Folder of ndx}) as alias
move File_List of ndx to _folder
end repeat
# Move left-over (miscellaneous) items.
set itemsToMove to (items whose kind is not "Volume" and name is not in exlusionList and ¬
name does not start with "Cleaned " and label index is not in {2, 6, 7}) as alias list
if itemsToMove ≠ {} then
set _folder to (make new folder at newFolder with properties {name:"Miscellaneous_Files"}) as alias
move itemsToMove to _folder
end if
# run script repositionDesktopIcons -- not included with this script.
open newFolder
tell application "Finder"'s front window to if its bounds ≠ {0, defaultWindowPositionY, 844, 1196} ¬
then set its bounds to {0, defaultWindowPositionY, 844, 1196}
else
beep
end if
end tell
end tell
on error e number n
stdErr(e, n, true, true) of me
end try
-------------------------------------------------------------------------------------------
--» HANDLERS
-------------------------------------------------------------------------------------------
on stdErr(e, n, beepFlag, ddFlag)
set e to e & return & return & "Num: " & n
if beepFlag = true then
beep
end if
if ddFlag = true then
tell me
set dDlg to display dialog e with title "ERROR!" buttons {"Cancel", "Copy", "OK"} default button "OK"
end tell
if button returned of dDlg = "Copy" then set the clipboard to e
else
return e
end if
end stdErr
-------------------------------------------------------------------------------------------