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

Opera 81.0.4196.60 - High-performance We...
Opera is a fast and secure browser trusted by millions of users. With the intuitive interface, Speed Dial and visual bookmarks for organizing favorite sites, news feature with fresh, relevant content... Read more
Fantastical 3.5.1 - Create calendar even...
Fantastical is the Mac calendar you'll actually enjoy using. Creating an event with Fantastical is quick, easy, and fun: Open Fantastical with a single click or keystroke Type in your event... Read more
Evernote 10.26.5 - Create searchable not...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
Parallels Desktop 17.1.1 - Run Windows a...
Parallels allows you to run Windows and Mac applications side by side. Choose your view to make Windows invisible while still using its applications, or keep the familiar Windows background and... Read more
BBEdit 14.0.3 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more
Minecraft 973 - Popular sandbox building...
Minecraft allows players to build constructions out of textured cubes in a 3D procedurally generated world. Other activities in the game include exploration, gathering resources, crafting, and combat... Read more
Viber 16.6.0 - Send messages and make fr...
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
iMazing 2.14.6 - Complete iOS device man...
iMazing is the world’s favourite iOS device manager for Mac and PC. Millions of users every year leverage its powerful capabilities to make the most of their personal or business iPhone and iPad.... Read more
Vivaldi 5.0.2497.24 - An advanced browse...
Vivaldi is a browser for our friends. We live in our browsers. Choose one that has the features you need, a style that fits and values you can stand by. From the look and feel, to how you interact... Read more
Vitamin-R 4.05 - Personal productivity t...
Vitamin-R creates the optimal conditions for your brain to work at its best by structuring your work into short bursts of distraction-free, highly focused activity alternating with opportunities for... Read more

Latest Forum Discussions

See All

TouchArcade Game of the Week: ‘Rocket Le...
After years and years and years of people demanding an official Rocket League game on mobile, developer Psyonix has finally delivered with their made-for-mobile spin-off Rocket League Sideswipe. Now, an ultra-popular IP releasing a mobile-ized... | Read more »
Steal Your Enemy’s Powers in ‘Mimelet’,...
Developer Neutronized is probably most well-known for the excellent Super Cat Tales series, but they are seemingly always putting out other unique and colorful titles too. It’s especially impressive considering this is just a solo developer. As work... | Read more »
SwitchArcade Round-Up: ‘Big Brain Academ...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for December 3rd, 2021. In today’s article, we’ve got a bit of news about an upcoming addition to the Nintendo Switch Online Expansion Pass before we head into today’s new releases.... | Read more »
Rocket League Sideswipe: Season 1 and Cr...
Rocket League Sideswipe’s pre-season has ended and all ranks have been reset. But here’s the great news – season 1 is officially on and a new event has arrived! Turbo Season has already kicked off and will last until January 25th. [Read more] | Read more »
‘Dandara: Trials of Fear+’ and Our 2018...
This week, two App Store Greats join Apple Arcade alongside big updates to some excellent games on the service. With no new game announced yet, it looks like Disney Melee Mania might be the final new game of 2021 for the service barring any last... | Read more »
Mini Metro’s New Big Update Adds the Add...
\ Dinosaur Polo Club has made sure 2021 is awesome for Mini Metro ($3.99) players through big updates. We’ve had the Chongqing map, Budapest, and more arrive for free on iOS and Android. Mini Metro was also added to Apple Arcade as Mini Metro+ this... | Read more »
SwitchArcade Round-Up: ‘Archvale’, ‘Aste...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for December 2nd, 2021. My time was tight today, friends. I spent four hours or so in the hospital getting my ticker thoroughly checked after a bit of a scare yesterday. Luckily, all... | Read more »
‘Final Gear’ is Adding Iconic Evangelion...
Final Gear, Komoe Technology Limited’s mech and maiden-themed mobile RPG, has just announced an exciting crossover event with the similarly mech-themed IP, Evangelion. The collab with the popular franchise lets players pilot iconic Evangelion mechs... | Read more »
Lineage2M is the beautiful MMORPG from N...
Good news for Lineage2 fans everywhere - Lineage2M, NCSOFT's new mobile title that boasts high-quality 3D in 4K resolution, is out now on PC, Android, and iOS devices across the globe. Players can now dive into a vast open-world environment and... | Read more »
‘Lineage2M’ is NCSOFT’s Gorgeous MMORPG...
Servers are now live for Lineage2M, NCSOFT’s gorgeous-looking MMORPG that follows up on the success and quality of the Lineage2 franchise. Out now on iOS, Android, and on PC, the new mobile title features consistent high-end graphics, massive... | Read more »

Price Scanner via MacPrices.net

Holiday Sale! Apple AirPods for only $79, $50...
AT&T has base-model Apple AirPods with Charging Case, 2nd generation, on Holiday sale for only $79 while supplies last. Their price is $50 off Apple’s MSRP, and it’s the lowest price we’ve ever... Read more
New Holiday sale at AT&T: $200 off any Ap...
AT&T is offering Apple Watch models for $200 off MSRP when you purchase two Watches with AT&T service and add at least one new line. The fine print: “Enjoy $200 off Apple Watch when you buy... Read more
Save $260 on 13″ M1 16GB RAM/512GB SSD MacBoo...
Apple has 13″ M1 MacBook Pros with 8GB of RAM and 256GB or 512GB SSDs for $200-$230 off MSRP, Certified Refurbished. If 8GB of RAM is not enough for you, Apple has restocked custom-configurations... Read more
AirPods Max headphones back on Holiday sale f...
Amazon has Blue and Space Gray AirPods Max headphones on sale again for $120 off Apple’s MSRP, down to $429. Shipping is free. Their price is the lowest we’ve ever seen for AirPods Max headphones... Read more
Back in stock! $589 M1 Mac minis at Apple, Ce...
Apple has restocked the base M1-powered Mac mini in their Certified Refurbished section for only $589. Each mini comes with Apple’s one-year warranty, and shipping is free: – M1 Mac mini (8GB RAM/... Read more
Apple has restocked 2nd generation 4K Apple T...
Apple has restocked a full line of Certified Refurbished 2nd generation 32GB and 64GB 4K Apple TVs with Siri remotes for $30 off the cost of new models. Apple’s standard one-year warranty is included... Read more
In stock today: 13″ Gray M1 MacBook Pros for...
Apple’s 13″ Space Gray MacBook Pros with M1 Apple Silicon CPUs are on sale at B&H Photo today for $100-$150 off MSRP, starting at $1199. Free 1-2 shipping is available for most addresses in the... Read more
Looking for an iPad Pro? Get last year’s mode...
Apple has Certified Refurbished 2020 11″ and 12″ iPad Pros available in their online store in a variety of configurations. Models start at $609 and range up to $350 off Apple’s original MSRP. Each... Read more
Clearance 2020 Intel-based 16″ MacBook Pros i...
Apple has Certified Refurbished 2020 16″ 2.6GHz 6-Core MacBook Pros in stock for $1949 including free shipping. Their price is $450 off original MSRP. Each model features a new outer case, is in like... Read more
13″ M1 MacBook Pro with 512GB SSD on Cyber Mo...
Amazon has the Space Gray 13″ M1 MacBook Pro with a 512GB SSD on Cyber Monday 2021 sale for $250 off MSRP shipped: – 2020 13″ MacBook Pro Space Gray M1 CPU/512GB SSD: $1249.99 $250 off MSRP Their $... Read more

Jobs Board

Geek Squad Advanced Repair *Apple* Professi...
**843364BR** **Job Title:** Geek Squad Advanced Repair Apple Professional **Job Category:** Store Associates **Store Number or Department:** 000853-Jackson-Store Read more
*Apple* End User Support Specialist - North...
…of Key Responsibility: 1. Responsible for support of all College owned Apple computers, mobile ios devices and peripherals such as monitors, keyboards, printers, Read more
Geek Squad Advanced Repair *Apple* Professi...
**843218BR** **Job Title:** Geek Squad Advanced Repair Apple Professional **Job Category:** Store Associates **Store Number or Department:** 001763-Lady Lake-Store Read more
Sr. Technical Support Specialist ( *Apple* /M...
Description Technical Support, Sr. ( Apple Mac End User Support Specialist) - The Star, Frisco, TX LEGENDS Founded in 2008, Legends is a premium experiences company Read more
Sr. *Apple* Engineer - Bering Straits Nativ...
…, a subsidiary of Bering Straits Native Corporation is currently seeking a qualified Sr. Apple Engineer for work in the Fort Meade, MD area. The Apple Engineer Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.