TweetFollow Us on Twitter

More Finder Scripting

Volume Number: 20 (2004)
Issue Number: 11
Column Tag: Programming

More Finder Scripting

by Benjamin S. Waldie

We've taken a look at some basic Finder scripting, including creating, naming, and updating folders. This month, let's expand a bit further, and begin looking at some other scriptable Finder functionality.

Manipulating Finder objects

In this article, when I refer to a Finder "item" or "object", please note that I am simply referring generically to either a file or a folder.

Opening

We have already seen how the following code can be used to open a folder using the Finder:

tell application "Finder"
	set theFolder to make new folder at desktop with properties {name:"My Folder"}
	open theFolder
end tell

You may also have the need to open a file using the Finder. To simply open a file, the AppleScript syntax is the same:

set theFile to choose file
tell application "Finder"
	open theFile
end tell

In some cases, you may want to open a file using a specific application. For example, let's say that you have a Photoshop or ImageReady droplet, or an AppleScript droplet, and you want to process one or more dropped items. You can do this with AppleScript in the Finder by making use of the using parameter along with the open command.

set theApplication to choose application as alias
set theFile to choose file
tell application "Finder"
	open theFile using theApplication
end tell

Revealing

If you simply want to locate and navigate to an item in the Finder, you can use the reveal command. This will locate the object in the Finder, open a new window if necessary, display and select the specified object.

set theFile to choose file
tell application "Finder"
	reveal theFile
end tell

Moving

Moving files and folders around is another common task involving the Finder. To move a file or folder, use the move command.

set theFile to choose file
set theDestinationFolder to choose folder with prompt "Please select a destination folder:"
tell application "Finder"
	move theFile to theDestinationFolder
end tell

By default, the move command will not automatically replace existing items in the destination location with the same name. If you want to replace existing items in any situation, then you can simply use the replacing parameter to indicate that any existing items should be replaced, if necessary. For example:

tell application "Finder"
	move theFile to theDestinationFolder replacing true
end tell

If you do not want to replace existing items, but you still want to move the item to the destination folder, then you will need to create custom code to handle the situation as you see fit. For example, if you wanted to add a unique numeric suffix to the item name, and then move it, you could use the following code:

set theFile to choose file
set theDestinationFolder to choose folder with prompt "Please select a destination folder:"
tell application "Finder"
	set theFileName to name of theFile
	set thePathToCheck to theDestinationFolder & theFileName as string
	if item thePathToCheck exists then
		set theSuffix to 1
		repeat
			if (item (thePathToCheck & theSuffix) exists) = false then exit repeat
			set theSuffix to theSuffix + 1
		end repeat
		set name of theFile to theFileName & theSuffix
	end if
	move theFile to theDestinationFolder
end tell

Duplicating

To copy an item, you need to use the duplicate command, rather than the copy command. For example:

set theFile to choose file
set theDestinationFolder to choose folder with prompt "Please select a destination folder:"
tell application "Finder"
	duplicate theFile to theDestinationFolder
end tell

As of the writing of this article, the Finder dictionary did indicate the presence of a copy command. However, this command was not yet implemented in the Mac OS X Panther (10.3.3) Finder. In addition, once functional, the copy command will be used to copy items to the clipboard, rather than to copy them from one location to another.

Duplicating is similar to moving, in that it will not automatically replace existing items with the same names. In order to replace existing items, you need to use the replacing parameter.

tell application "Finder"
	duplicate theFile to theDestinationFolder replacing true
end tell

If you do not want to replace existing items in a destination folder, but you still want to copy an item to the destination folder, then you will need to create code to handle this situation. For example:

set theFile to choose file
set theDestinationFolder to choose folder with prompt "Please select a destination folder:"
tell application "Finder"
	set theFileName to name of theFile
	set thePathToCheck to theDestinationFolder & theFileName as string
	if item thePathToCheck exists then
		set theSuffix to 1
		repeat
			if (item (thePathToCheck & theSuffix) exists) = false then exit repeat
			set theSuffix to theSuffix + 1
		end repeat
		set name of theFile to theFileName & theSuffix
	end if
	duplicate theFile to theDestinationFolder
end tell

Deleting

To delete an item, use the delete command:

set theFile to choose file
tell application "Finder"
	delete theFile
end tell

Please note that the delete command will not actually delete an item. Rather, it will move the item to the trash, where it may be retrieved until the trash has been emptied. If you want to fully delete a file, you will need to tell the Finder to empty the trash after performing the deletion. For example:

set theFile to choose file
tell application "Finder"
	delete theFile
	empty the trash
end tell

Keep in mind that by emptying the trash, you will be removing any other items residing in the trash as well.

Getting Object Info

When working with an item in the Finder, you will probably want to retrieve information about the item. You can do this by accessing the properties of the desired object. Common properties shared by both files, folders, and disks can be found under the Finder Items suite in the Finder dictionary.


Figure 1. Finder Dictionary > Finder Item Detail

Some commonly accessed properties of Finder items include the modification date, name, and size of the item. For example:

set theFile to choose file
tell application "Finder"
	set theModDate to modification date of theFile
	set theName to name of theFile
	set theSize to size of theFile
end tell

In addition to these common properties, files, folders, and disks also have additional properties specific to their particular class. For example, files have a file type and creator type property, whereas folders and disks have other properties not possessed by files. For example:

set theFile to choose file
tell application "Finder"
	set theFileType to file type of theFile
	set theCreatorType to creator type of theFile
end tell

Some developers prefer to avoid scripting the Finder when possible, and resort instead to using a scripting addition to access certain properties of files and folders. The Standard Additions scripting addition, which is installed with Mac OS X, contains a command for just this task - info for. This command may be used to retrieve a variety of properties for files and folders, such as name, modification date, size, and more. For example:

  • set theFile to choose file
  • set theFileInfo to info for theFile
  • set theName to name of theFileInfo
  • set theModDate to modification date of theFileInfo
  • set theSize to size of theFileInfo

What About System Events?

If you have done some scripting in Mac OS X before, then you may be somewhat familiar with the System Events background application. This application allows you to automate various system related activities.


Figure 2. The System Events Dictionary Window

Some of the commands in the System Events dictionary are very similar to commands found in the Finder dictionary, including the delete, move, and open commands. For these specific commands, System Events may be used instead of the Finder. However, please note that certain parameters, which are present when scripting the Finder, are not present when scripting System Events. For example, when moving an item using System Events, there is not currently a way to specify whether existing items should be overwritten. When using this command, items will never be overwritten.

set theFile to (choose file) as string
set theDestinationFolder to choose folder
tell application "System Events"
	move disk item theFile to theDestinationFolder
end tell

The System Events dictionary has expanded significantly with the last few major Mac OS X releases, and I expect it to continue to expand in the future. My guess is that more Finder-like functionality will continue to be built into System Events with every major OS release. System Events contains much more than the few commands I mentioned above, and I encourage you to explore it in greater detail in order to find out more about what System Events has to offer.

In Closing

This month's article should take you a little further down the road of Finder scripting. For some editable examples of Finder scripting, you may want to check out the example Finder scripts included with Mac OS X. These can be found in the Library > Scripts > Finder Scripts folder on your machine. In addition, Apple's AppleScript web site contains some Finder scripts, which can be triggered from the Finder's toolbar. For additional information about all of these scripts, as well as links to download the toolbar scripts, please visit http://www.apple.com/applescript/finder/.

Until next time, keep scripting!


Benjamin Waldie is president of Automated Workflows, LLC, a firm specializing in AppleScript and workflow automation consulting. In addition to his role as a consultant, Benjamin is an evangelist of AppleScript, and can frequently be seen presenting at Macintosh User Groups, Seybold Seminars, and MacWorld. For additional information about Benjamin, please visit http://www.automatedworkflows.com, or email Benjamin at applescriptguru@mac.com.applescriptguru@mac.com.

 
AAPL
$501.11
Apple Inc.
+2.43
MSFT
$34.64
Microsoft Corpora
+0.15
GOOG
$898.03
Google Inc.
+16.02

MacTech Search:
Community Search:

Software Updates via MacUpdate

CrossOver 12.5.1 - Run Windows apps on y...
CrossOver can get your Windows productivity applications and PC games up and running on your Mac quickly and easily. CrossOver runs the Windows software that you need on Mac at home, in the office,... Read more
Paperless 2.3.1 - Digital documents mana...
Paperless is a digital documents manager. Remember when everyone talked about how we would soon be a paperless society? Now it seems like we use paper more than ever. Let's face it - we need and we... Read more
Apple HP Printer Drivers 2.16.1 - For OS...
Apple HP Printer Drivers includes the latest HP printing and scanning software for Mac OS X 10.6, 10.7 and 10.8. For information about supported printer models, see this page.Version 2.16.1: This... Read more
Yep 3.5.1 - Organize and manage all your...
Yep is a document organization and management tool. Like iTunes for music or iPhoto for photos, Yep lets you search and view your documents in a comfortable interface, while offering the ability to... Read more
Apple Canon Laser Printer Drivers 2.11 -...
Apple Canon Laser Printer Drivers is the latest Canon Laser printing and scanning software for Mac OS X 10.6, 10.7 and 10.8. For information about supported printer models, see this page.Version 2.11... Read more
Apple Java for Mac OS X 10.6 Update 17 -...
Apple Java for Mac OS X 10.6 delivers improved security, reliability, and compatibility by updating Java SE 6.Version Update 17: Java for Mac OS X 10.6 Update 17 delivers improved security,... Read more
Arq 3.3 - Online backup (requires Amazon...
Arq is online backup for the Mac using Amazon S3 and Amazon Glacier. It backs-up and faithfully restores all the special metadata of Mac files that other products don't, including resource forks,... Read more
Apple Java 2013-005 - For OS X 10.7 and...
Apple Java for OS X 2013-005 delivers improved security, reliability, and compatibility by updating Java SE 6 to 1.6.0_65. On systems that have not already installed Java for OS X 2012-006, this... Read more
DEVONthink Pro 2.7 - Knowledge base, inf...
Save 10% with our exclusive coupon code: MACUPDATE10 DEVONthink Pro is your essential assistant for today's world, where almost everything is digital. From shopping receipts to important research... Read more
VirtualBox 4.3.0 - x86 virtualization so...
VirtualBox is a family of powerful x86 virtualization products for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high performance product for enterprise customers... Read more

Briquid Gets Updated with New Undo Butto...
Briquid Gets Updated with New Undo Button, Achievements, and Leaderboards, on Sale for $0.99 Posted by Andrew Stevens on October 16th, 2013 [ | Read more »
Halloween – iLovecraft Brings Frightenin...
Halloween – iLovecraft Brings Frightening Stories From Author H.P. | Read more »
The Blockheads Creator David Frampton Gi...
The Blockheads Creator David Frampton Gives a Postmortem on the Creation Process of the Game Posted by Andrew Stevens on October 16th, 2013 [ permalink ] Hey, a | Read more »
Sorcery! Enhances the Gameplay in Latest...
Sorcery! | Read more »
It Came From Australia: Tiny Death Star
NimbleBit and Disney have teamed up to make Star Wars: Tiny Death Star, a Star Wars take on Tiny Tower. Right now, the game is in testing in Australia (you will never find a more wretched hive of scum and villainy) but we were able to sneak past... | Read more »
FIST OF AWESOME Review
FIST OF AWESOME Review By Rob Rich on October 16th, 2013 Our Rating: :: TALK TO THE FISTUniversal App - Designed for iPhone and iPad A totalitarian society of bears is only the tip of the iceberg in this throwback brawler.   | Read more »
PROVERBidioms Paints English Sayings in...
PROVERBidioms Paints English Sayings in a Picture for Users to Find Posted by Andrew Stevens on October 16th, 2013 [ permalink ] | Read more »
OmniFocus 2 for iPhone Review
OmniFocus 2 for iPhone Review By Carter Dotson on October 16th, 2013 Our Rating: :: OMNIPOTENTiPhone App - Designed for the iPhone, compatible with the iPad OmniFocus 2 for iPhone is a task management app for people who absolutely... | Read more »
Ingress – Google’s Augmented-Reality Gam...
Ingress – Google’s Augmented-Reality Game to Make its Way to iOS Next Year Posted by Andrew Stevens on October 16th, 2013 [ permalink ] | Read more »
CSR Classics is Full of Ridiculously Pre...
CSR Classics is Full of Ridiculously Pretty Classic Automobiles Posted by Rob Rich on October 16th, 2013 [ permalink ] | Read more »

Price Scanner via MacPrices.net

Apple Store Canada offers refurbished 11-inch...
 The Apple Store Canada has Apple Certified Refurbished 2013 11″ MacBook Airs available starting at CDN$ 849. Save up to $180 off the cost of new models. An Apple one-year warranty is included with... Read more
Updated MacBook Price Trackers
We’ve updated our MacBook Price Trackers with the latest information on prices, bundles, and availability on MacBook Airs, MacBook Pros, and the MacBook Pros with Retina Displays from Apple’s... Read more
13-inch Retina MacBook Pros on sale for up to...
B&H Photo has the 13″ 2.5GHz Retina MacBook Pro on sale for $1399 including free shipping. Their price is $100 off MSRP. They have the 13″ 2.6GHz Retina MacBook Pro on sale for $1580 which is $... Read more
AppleCare Protection Plans on sale for up to...
B&H Photo has 3-Year AppleCare Warranties on sale for up to $105 off MSRP including free shipping plus NY sales tax only: - Mac Laptops 15″ and Above: $244 $105 off MSRP - Mac Laptops 13″ and... Read more
Apple’s 64-bit A7 Processor: One Step Closer...
PC Pro’s Darien Graham-Smith reported that Canonical founder and Ubuntu Linux creator Mark Shuttleworth believes Apple intends to follow Ubuntu’s lead and merge its desktop and mobile operating... Read more
MacBook Pro First, Followed By iPad At The En...
French site Info MacG’s Florian Innocente says he has received availability dates and order of arrival for the next MacBook Pro and the iPad from the same contact who had warned hom of the arrival of... Read more
Chart: iPad Value Decline From NextWorth
With every announcement of a new Apple device, serial upgraders begin selling off their previous models – driving down the resale value. So, with the Oct. 22 Apple announcement date approaching,... Read more
SOASTA Survey: What App Do You Check First in...
SOASTA Inc., the leader in cloud and mobile testing announced the results of its recent survey showing which mobile apps are popular with smartphone owners in major American markets. SOASTA’s survey... Read more
Apple, Samsung Reportedly Both Developing 12-...
Digitimes’ Aaron Lee and Joseph Tsai report that Apple and Samsung Electronics are said to both be planning to release 12-inch tablets, and that Apple is currently cooperating with Quanta Computer on... Read more
Apple’s 2011 MacBook Pro Lineup Suffering Fro...
Appleinsider’s Shane Cole says that owners of early-2011 15-inch and 17-inch MacBook Pros are reporting issues with those models’ discrete AMD graphics processors, which in some cases results in the... Read more

Jobs Board

*Apple* Retail - Manager - Apple (United Sta...
Job SummaryKeeping an Apple Store thriving requires a diverse set of leadership skills, and as a Manager, youre a master of them all. In the stores fast-paced, dynamic Read more
*Apple* Support / *Apple* Technician / Mac...
Apple Support / Apple Technician / Mac Support / Mac Set up / Mac TechnicianMac Set up and Apple Support technicianThe person we are looking for will have worked Read more
Senior Mac / *Apple* Systems Engineer - 318...
318 Inc, a top provider of Apple solutions is seeking a new Senior Apple Systems Engineer to be based out of our Santa Monica, California location. We are a Read more
*Apple* Retail - Manager - Apple Inc. (Unite...
Job Summary Keeping an Apple Store thriving requires a diverse set of leadership skills, and as a Manager, you’re a master of them all. In the store’s fast-paced, Read more
*Apple* Solutions Consultant - Apple (United...
**Job Summary** Apple Solutions Consultant (ASC) - Retail Representatives Apple Solutions Consultants are trained by Apple on selling Apple -branded products Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.