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.

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:

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.

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

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:

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.

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.

Community Search:

MacTech Search:

Software Updates via MacUpdate

Hopper Disassembler 4.3.16- - Binary dis...

Hopper Disassembler is a binary disassembler, decompiler, and debugger for 32- and 64-bit executables. It will let you disassemble any binary you want, and provide you all the information about its... Read more

Default Folder X 5.2.2 - Enhances Open a...

Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click on... Read more

EtreCheck 4.0.1 - For troubleshooting yo...

EtreCheck is an app that displays the important details of your system configuration and allow you to copy that information to the Clipboard. It is meant to be used with Apple Support Communities to... Read more

Carbon Copy Cloner 5.0.9 - Easy-to-use b...

Carbon Copy Cloner backups are better than ordinary backups. Suppose the unthinkable happens while you're under deadline to finish a project: your Mac is unresponsive and all you hear is an ominous,... Read more

QuickBooks 17.2.25.638 R26 - Financial m...

QuickBooks helps you manage your business easily and efficiently. Organize your finances all in one place, track money going in and out of your business, and spot areas where you can save.
Built for... Read more

Monosnap 3.4.10 - Versatile screenshot u...

Monosnap lets you capture screenshots, share files, and record video and .gifs!
Features
Capture
Capture full screen, just part of the screen, or a selected window
Make your crop area pixel... Read more

Vivaldi 1.14.1077.50 - An advanced brows...

Vivaldi is a browser for our friends.
In 1994, two programmers started working on a web browser. Our idea was to make a really fast browser, capable of running on limited hardware, keeping in mind... Read more

Viber 8.2.0 - Send messages and make fre...

Viber lets you send free messages and make free calls to other Viber users, on any device and network, in any country!
Viber syncs your contacts, messages and call history with your mobile device, so... Read more

QuickBooks 17.2.25.638 R26 - Financial m...

QuickBooks helps you manage your business easily and efficiently. Organize your finances all in one place, track money going in and out of your business, and spot areas where you can save.
Built for... Read more

Carbon Copy Cloner 5.0.9 - Easy-to-use b...

Carbon Copy Cloner backups are better than ordinary backups. Suppose the unthinkable happens while you're under deadline to finish a project: your Mac is unresponsive and all you hear is an ominous,... Read more

Latest Forum Discussions

Our top 5 characters from casual RPG Cre...

Creature Quest definitely lives up to its name with a host of collectible creatures based on fantasy tales and world mythologies. To celebrate Creature Quest’s first birthday, we’re going to lay out what we think are the five best characters in the... | Read more »

Around the Empire: What have you missed...

Did you know that Steel Media has a whole swathe of other sites dedicated to all aspects of mobile gaming? Sure you'll get the very best iPhone news, reviews, and opinions right here at 148Apps, but we don't want you missing out on a single piece... | Read more »

All the best games on sale for iPhone an...

Oh hi there, and welcome to our round-up of the best games that are currently on sale for iPhone and iPad. You thought I didn't see you there, did you, skulking behind the bushes? Trust me though, the bushes aren't where the best deals are. The... | Read more »

The Battle of Polytopia Guide - How to H...

A new update just released for The Battle of Polytopia (formerly Super Tribes), which introduces online multiplayer. For all the fans of Midjiwan’s lite take on Civilization, this is certainly welcome news, but playing online isn’t as easy and... | Read more »

Here are the very best mobile games to p...

It's Valentine's Day! Did you get loads of cards and chocolates and other tacky, simple expressions of human affection? Did you send out tat because you find it almost impossible to express emotion unless there's a section dedicated to it at your... | Read more »

A laid-back mix of RPG and TCG, Creature Quest is all about building your deck, evolving your creatures and winning in battle. It’s the creation of VC Mobile, set up by Might and Magic producer Jon Van Caneghem. There are elements of that classic... | Read more »

Check out this awesome hands-on with the...

Well, PlayerUnknown's Battlegrounds has come out on mobile. This isn't a clone, this isn't a riff on the battleroyale mechanics of the game, it's the official mobile port by Tencent. But there's a little bit of a hitch.
[Read more]
| Read more »

Hostage Negotiator (Entertainment)

Hostage Negotiator 1.1.0
Device: iOS Universal
Category: Entertainment
Price: $3.99, Version: 1.1.0 (iTunes)
Description:
Official app of the board game by AJ Porfirio and Van Ryder Games.
In Hostage Negotiator, you play the part of... | Read more »

Price Scanner via MacPrices.net

Saturday Sale: Amazon offers 13″ 1.8GHz/256GB...

Amazon has the 13″ 1.8GHz/256B Apple MacBook Air on sale today for $250 off MSRP including free shipping:
– 13″ 1.8GHz/256GB MacBook Air (MQD42LL/A): $949.99, $250 off MSRP
Their price is the lowest... Read more

Roundup of Apple Certified Refurbished 12″ Ma...

Apple has Certified Refurbished 2017 12″ Retina MacBooks available for $200-$240 off the cost of new models. Apple will include a standard one-year warranty with each MacBook, and shipping is free.... Read more

Apple offers Certified Refurbished 10″ and 12...

Apple is now offering Certified Refurbished 2017 10″ and 12″ iPad Pros for $100-$190 off MSRP, depending on the model. An Apple one-year warranty is included with each model, and shipping is free:
–... Read more

Apple Canada offers Certified Refurbished Mac...

Canadian shoppers can save up to $560 on the purchase of a 2017 current-generation MacBook Pro, MacBook, or MacBook Air with Certified Refurbished models at Apple Canada. Apple’s refurbished prices... Read more

Adorama has the 8-core iMac Pro on sale for $4799 including free shipping plus NY & NJ sales tax only. Their price is $200 off MSRP, and it’s the currently lowest price available for an iMac Pro.
Read more

Sale! Walmart lowers prices even more on 9″ i...

Walmart has lowered their sale price on 9.7″ Apple iPads to $80 off MSRP for a limited time. Sale prices are for online orders only, in-store prices may vary:
– 9″ 32GB iPad: $249.99 $80 off
– 9″... Read more

Roundup of 13″ MacBook Pro sales, models avai...

B&H Photo has 13″ MacBook Pros on sale for up to $200 off MSRP. Shipping is free, and B&H charges sales tax for NY & NJ residents only. Their prices are the lowest available for these... Read more

MacTech is a registered trademark of Xplain Corporation. Xplain, "The journal of Apple technology", Apple Expo, Explain It, MacDev, MacDev-1, THINK Reference, NetProfessional, Apple Expo, MacTech Central, MacTech Domains, MacNews, MacForge, and the MacTutorMan are trademarks or service marks of Xplain Corporation. Sprocket is a registered trademark of eSprocket Corporation. Other trademarks and copyrights appearing in this printing or software remain the property of their respective holders. Not responsible for typographical errors.

All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.