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.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Posterino 3.3.7 - Create posters, collag...
Posterino offers enhanced customization and flexibility including a variety of new, stylish templates featuring grids of identical or odd-sized image boxes. You can customize the size and shape of... Read more
Airmail 3.2.9 - Powerful, minimal email...
Airmail is an mail client with fast performance and intuitive interaction. Support for iCloud, MS Exchange, Gmail, Google Apps, IMAP, POP3, Yahoo!, AOL, Outlook.com, Live.com. Airmail was designed... Read more
Arq 5.8.4 - Online backup to Google Driv...
Arq is super-easy online backup for Mac and Windows computers. Back up to your own cloud account (Amazon Cloud Drive, Google Drive, Dropbox, OneDrive, Google Cloud Storage, any S3-compatible server... Read more
Microsoft Remote Desktop 8.0.39 - Connec...
With Microsoft Remote Desktop, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help... Read more
Arq 5.8.4 - Online backup to Google Driv...
Arq is super-easy online backup for Mac and Windows computers. Back up to your own cloud account (Amazon Cloud Drive, Google Drive, Dropbox, OneDrive, Google Cloud Storage, any S3-compatible server... Read more
Airmail 3.2.9 - Powerful, minimal email...
Airmail is an mail client with fast performance and intuitive interaction. Support for iCloud, MS Exchange, Gmail, Google Apps, IMAP, POP3, Yahoo!, AOL, Outlook.com, Live.com. Airmail was designed... Read more
Microsoft Remote Desktop 8.0.39 - Connec...
With Microsoft Remote Desktop, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help... Read more
Posterino 3.3.7 - Create posters, collag...
Posterino offers enhanced customization and flexibility including a variety of new, stylish templates featuring grids of identical or odd-sized image boxes. You can customize the size and shape of... Read more
Airmail 3.2.8 - Powerful, minimal email...
Airmail is an mail client with fast performance and intuitive interaction. Support for iCloud, MS Exchange, Gmail, Google Apps, IMAP, POP3, Yahoo!, AOL, Outlook.com, Live.com. Airmail was designed... Read more
WhatRoute 2.0.21 - Geographically trace...
WhatRoute is designed to find the names of all the routers an IP packet passes through on its way from your Mac to a destination host. It also measures the round-trip time from your Mac to the router... Read more

Latest Forum Discussions

See All

Pokémon GO might be getting legendaries...
The long-awaited legendary Pokémon may soon be coming to Pokémon GO at long last. Data miners have already discovered that the legendary birds, Articuno, Moltres, and Zapdos are already in the game, it’s just a matter of time. [Read more] | Read more »
The best deals on the App Store this wee...
If you’ve got the Monday blues we have just the thing to cheer you up. The week is shaping up to be a spectacular one for sales. We’ve got a bunch of well-loved indie games at discounted prices this week along with a few that are a little more... | Read more »
Honor 8 Pro, a great choice for gamers
Honor is making strides to bring its brand to the forefront of mobile gaming with its latest phone, the Honor 8 Pro. The Pro sets itself apart from its predecessor, the Honor 8, with a host of premium updates that boost the device’s graphical and... | Read more »
The 4 best outdoor adventure apps
Now that we're well into the pleasant, warmer months, it's time to start making the most of the great outdoors. Spring and summer are ideal times for a bit of trekking or exploration. You don't have to go it alone, though. There are plenty of... | Read more »
Things 3 (Productivity)
Things 3 3.0.1 Device: iOS iPhone Category: Productivity Price: $7.99, Version: 3.0.1 (iTunes) Description: Meet the all-new Things! A complete rethinking of the original, award-winning task manager – with a perfect balance between... | Read more »
Oddball mash-up Arkanoid vs Space Invade...
In a move no one was really expecting, Square Enix has put forth an Arkanoid/Space Invaders mash-up aptly titled Arkanoid vs Space Invaders. The game launched today on both iOS and Android and the reviews are actually quite good. [Read more] | Read more »
Arkanoid vs Space Invaders (Games)
Arkanoid vs Space Invaders 1.0 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0 (iTunes) Description: LAUNCH SALE: GET THE GAME AT 20% OFF! Two of the most iconic classic games ever made meet in Arkanoid vs Space... | Read more »
The best new games we played this week
Things got off to a bit of a slow start this week, but as we steadily creep towards Friday a bunch of great games have started cropping up. If you're looking for a quality new release to play this weekend, we've got you covered. Here's a handy... | Read more »
No Stick Shooter (Games)
No Stick Shooter 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Happy Robot presents a fresh take on the classic retro-arcade shooters we all know and love. Featuring 30 levels of non-stop... | Read more »
Chroma Squad (Games)
Chroma Squad 1.0.85 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.85 (iTunes) Description: | Read more »

Price Scanner via MacPrices.net

Five To Six Million 10.5-inch iPad Pro Tablet...
Digitimes’ Siu Han and Joseph Tsai report that upstream supply chain shipments for Apple’s new 10.5-inch iPad Pro have been increasing, with monthly shipment volume expected to hit 600,000 units by... Read more
Georgia Tech Students Win Toyota and Net Impa...
Earlier this year, a team of students at Georgia Tech realized that there was a critical gap in transportation services for people who use wheelchairs, and wondered if the solution could be in the... Read more
13-inch 2.0GHz Space Gray MacBook Pro on sale...
Amazon has the 13″ 2.0GHz Space Gray non-Touch Bar MacBook Pro (MLL42LL/A) on sale for $1299.99 including free shipping. Their price is $200 off MSRP, and it’s currently the lowest price available... Read more
Roundup of 15-inch MacBook Pro sale prices, m...
B&H Photo has the new 2016 15″ Apple Touch Bar MacBook Pros in stock today and on sale for up to $200 off MSRP. Shipping is free, and B&H charges NY & NJ sales tax only: - 15″ 2.7GHz... Read more
15-inch 2.2GHz Retina MacBook Pro on sale for...
B&H Photo has the 2015 15″ 2.2GHz Retina MacBook Pro (MJLQ2LL/A) on sale for $1849 including free shipping plus NY & NJ sales tax only. Their price is $150 off MSRP. Read more
21-inch iMacs on sale for $100 off MSRP, save...
B&H Photo has 21″ iMacs on sale for $100 off MSRP, each including free shipping plus NY & NJ sales tax only: - 21″ 3.1GHz iMac 4K: $1399.99 $100 off MSRP - 21″ 2.8GHz iMac: $1199.99 $100 off... Read more
Groupon Survey Finds Families Will Spend One-...
With warmer weather finally arriving in most parts of the country and the school year winding down to a close, Groupon (http://www.groupon.com) asked 1,000 U.S. parents how much time their families... Read more
Panasonic Anounces Toughbook 33 2-in-1 Rugged...
Panasonic has announced the U.S. availability of the Panasonic Toughbook 33, claimed to be the first fully-rugged 2-in-1 detachable laptop that features a 3:2 display. Inspired by the hard-working... Read more
9-inch 32GB iPad Pros available for up to $10...
Amazon resellers are offering new 9″ 32GB iPad Pros for up to $101 off MSRP, starting at $498, including free shipping. Colors may be Space Gray, Silver, Gold, or Rose Gold, depending on the reseller... Read more
Back in stock: Apple refurbished Mac minis st...
Apple has Certified Refurbished Mac minis available starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: - 1.4GHz Mac mini: $419 $80 off MSRP - 2.6GHz Mac... Read more

Jobs Board

Director, *Apple* Program - ERP & Cloud...
…make a real difference. Come, shine with us! Astellas is announcing a Director, Apple Program - ERP & Cloud Platform Architecture Lead opportunity in Northbrook, IL. Read more
*Apple* Mobile Master - Best Buy (United Sta...
**508102BR** **Job Title:** Apple Mobile Master **Location Number:** 000511-Athens-Store **Job Description:** **What does a Best Buy Apple Mobile Master do?** At Read more
*Apple* Media Products - Commerce Engineerin...
Apple Media Products - Commerce Engineering Manager Job Number: 57037480 Santa Clara Valley, California, United States Posted: Apr. 18, 2017 Weekly Hours: 40.00 Job Read more
Geek Squad *Apple* Master Consultation Agen...
**500444BR** **Job Title:** Geek Squad Apple Master Consultation Agent **Location Number:** 000103-City Of Industry-Store **Job Description:** **What does a Geek Read more
Security Engineer, *Apple* Retail - Apple I...
Changing the world is all in a day's work at Apple . If you love innovation, here's your chance to make a career of it. You'll work hard. But the job comes with more Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.