Re: Rip Van Applescript
Re: Rip Van Applescript
- Subject: Re: Rip Van Applescript
- From: Peter Baxter <email@hidden>
- Date: Thu, 31 Jul 2008 05:42:07 +1000
Why not use the script that comes with your computer called "Replace
text in item names". I've used it for years very effectively.
try
tell application "Finder" to set the source_folder to (folder of the
front window) as alias
on error -- no open folder windows
set the source_folder to path to desktop folder as alias
end try
display dialog "Search and replace in:" buttons {"File Names", "Folder
Names", "Both"} default button 3
set the search_parameter to the button returned of the result
repeat
display dialog "Enter text to find in the item names:" default answer
"" buttons {"Cancel", "OK"} default button 2
set the search_string to the text returned of the result
if the search_string is not "" then exit repeat
end repeat
repeat
display dialog "Enter replacement text:" default answer "" buttons
{"Cancel", "OK"} default button 2
set the replacement_string to the text returned of the result
if the replacement_string contains ":" then
beep
display dialog "A file or folder name cannot contain a colon (:)."
buttons {"Cancel", "OK"} default button 2
else if the replacement_string contains "/" then
beep
display dialog "A file or folder name cannot contain a forward slash
(/)." buttons {"Cancel", "OK"} default button 2
else
exit repeat
end if
end repeat
display dialog "Replace “" & the search_string & "” with “" & the
replacement_string & "” in every item name?" buttons {"Cancel", "OK"}
default button 2
set the item_list to list folder source_folder without invisibles
set source_folder to source_folder as string
repeat with i from 1 to number of items in the item_list
set this_item to item i of the item_list
set this_item to (source_folder & this_item) as alias
set this_info to info for this_item
set the current_name to the name of this_info
set change_flag to false
if the current_name contains the search_string then
if the search_parameter is "Folder Names" and ¬
folder of this_info is true then
set the change_flag to true
else if the search_parameter is "File Names" and ¬
folder of this_info is false then
set the change_flag to true
else if the search_parameter is "Both" then
set the change_flag to true
end if
if the change_flag is true then
-- replace target string using delimiters
set AppleScript's text item delimiters to the search_string
set the text_item_list to every text item of the current_name
set AppleScript's text item delimiters to the replacement_string
set the new_item_name to the text_item_list as string
set AppleScript's text item delimiters to ""
my set_item_name(this_item, new_item_name)
end if
end if
end repeat
beep 2
on set_item_name(this_item, new_item_name)
tell application "Finder"
--activate
set the parent_container_path to (the container of this_item) as text
if not (exists item (the parent_container_path & new_item_name)) then
try
set the name of this_item to new_item_name
on error the error_message number the error_number
if the error_number is -59 then
set the error_message to "This name contains improper characters,
such as a colon (:)."
else --the suggested name is too long
set the error_message to error_message -- "The name is more than
31 characters long."
end if
--beep
tell me to display dialog the error_message default answer
new_item_name buttons {"Cancel", "Skip", "OK"} default button 3
copy the result as list to {new_item_name, button_pressed}
if the button_pressed is "Skip" then return 0
my set_item_name(this_item, new_item_name)
end try
else --the name already exists
--beep
tell me to display dialog "This name is already taken, please
rename." default answer new_item_name buttons {"Cancel", "Skip", "OK"}
default button 3
copy the result as list to {new_item_name, button_pressed}
if the button_pressed is "Skip" then return 0
my set_item_name(this_item, new_item_name)
end if
end tell
end set_item_name
Copyright © 2001–2007 Apple Inc.
On 31/07/2008, at 6:58 AM, Rich Reardon wrote:
So...
...after a 10 year hiatus on the Redmond dark side, I return to
routinized Mac use and resurrect a previously working Applescript
(below) to accommodate a workflow requiring me to find a pattern in
filenames and replace it.
The damn thing doesn't even compile past the first line.
After you recover from paroxysms of laughter at the presumption of
my code, perhaps you can point me in the direction of a Regular
expression OSAX that's current (or perhaps Applescript is wired to
deliver it now?). Thanks.
------------------------------------------
uses Scriptable Finder; uses Tanaka's OSAX
set user_input to display dialog "Enter part/whole name of filename
to be changed" default answer "filename"
if button returned of user_input is "ok" then
set file_seg to text returned of user_input
end if
set user_input to display dialog "Enter file name replacement
string" default answer "replace string"
if button returned of user_input is "ok" then
set rfstring to text returned of user_input
end if
set target_folder to choose folder with prompt "Select folder whose
filenames you wish to change"
set file_list to list folder target_folder
repeat with an_item in file_list
set old_name to (an_item as string)
if old_name contains file_seg then
set new_name to xReplace old_name search file_seg replace rfstring
with senseCase
tell application "Finder"
set name of file ((target_folder as string) & an_item as string) to
(new_name)
end tell
end if
end repeat
beep
display dialog "Script done, doo-dah!"
--
"When it's not necessary to do something, it becomes necessary NOT
to do it."
Rich Reardon
Digital Media Center Video Production
Room 540G, Rarig Center, 330 21st Ave. South
University of Minnesota
Minneapolis, MN 55455
email@hidden
Ph: 612-625-3486/Fax: 612-625-4864
http://dmc.umn.edu/video/
_______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list (applescript-
email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users
This email sent to email@hidden