Monday, January 22, 2018

#1 2015-01-15 10:59:02 am

tbconnor
Member
Registered: 2015-01-15
Posts: 2

Replace Text In Item Names

Hi,

I used to use a script that was extremely handy. Now I'm on OS 10.9.2 and I cannot find it.

I'm looking for a copy of the Replace Text In Item Names and any related Finder Scripts.

Any help would be greatly appreciated!

Thanks.

tbconnor


Filed under: text, help, Finder, replace

Offline

 

#2 2015-01-15 12:52:52 pm

McUsrII
Member
Registered: 2012-11-21
Posts: 3046
Website

Re: Replace Text In Item Names

Hello.

They should really still reside on your TimeMachine . . but, here are two versions of the Replace text in item names both copyright Sal Sohoigan/Apple Computer.

Applescript:

-- Replace Text in Item Names
-- ©1998 Sal Soghoian, Apple Computer


tell application "Finder"
   activate
   
   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
   if the search_parameter is "File Names" then
       set the display_parameter to "file"
   else if the search_parameter is "Folder Names" then
       set the display_parameter to "folder"
   else
       set the display_parameter to "file and folder"
   end if
   
   set the source_folder to choose folder with prompt "Folder containing " & the display_parameter & "s to process:"
   
   repeat
       display dialog "Enter text to find in " & the display_parameter & " names:" default answer ""
       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 ""
       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 (:)."
       else
           exit repeat
       end if
   end repeat
   
   
   display dialog "Replace “" & the search_string & "” with “" & the replacement_string & "” in every " & the display_parameter & " name?"
   
   
   display dialog "Include nested folders?" buttons {"Cancel", "Included Nested", "This Folder Only"} default button 3
   set the search_level to the button returned of the result
   
   if the search_parameter is "Both" then
       if the search_level is "This Folder Only" then
           set the item_list to (every item of the source_folder whose name contains the search_string) as list
       else
           set the item_list to (every item of the entire contents of the source_folder whose name contains the search_string) as list
       end if
   else if the search_parameter is "Folder Names" then
       if the search_level is "This Folder Only" then
           set the item_list to (every folder of the source_folder whose name contains the search_string) as list
       else
           set the item_list to (every folder of the entire contents of the source_folder whose name contains the search_string) as list
       end if
   else if the search_parameter is "File Names" then
       if the search_level is "This Folder Only" then
           set the item_list to (every file of the source_folder whose name contains the search_string) as list
       else
           set the item_list to (every file of the entire contents of the source_folder whose name contains the search_string) as list
       end if
   end if
   
   
   repeat with this_item in the item_list
       set this_item to the contents of this_item
       set the item_name to the name of this_item
       set AppleScript's text item delimiters to the search_string
       set the item_list to every text item of the item_name
       set AppleScript's text item delimiters to the replacement_string
       set the new_item_name to the item_list as string
       set AppleScript's text item delimiters to ""
       try
           set the name of this_item to the new_item_name
       on error error_msg
           set the source_folder_path to my extract_parent_folder_path_from(this_item)
           try
               reveal (the source_folder_path & the new_item_name) as string as alias
           on error
               reveal this_item
               set error_msg to "The new name: " & return & the new_item_name & return & "contains too many characters to rename this file."
           end try
           beep
           display dialog error_msg buttons {"Stop", "Continue"} default button 2
           if the button returned of the result is "Stop" then return "user canceled"
           set selection to {}
       end try
   end repeat
   
end tell

on extract_parent_folder_path_from(this_filepath)
   set this_filepath to this_filepath as text
   set x to the offset of ":" in (the reverse of every character of this_filepath) as string
   set this_filepath to (characters 1 thru -(x) of this_filepath) as text
   return this_filepath
end extract_parent_folder_path_from
beep 2
the item_list

Applescript:

(*
Replace Text In Item Names

Copyright © 2001 Apple Computer, Inc.

You may incorporate this Apple sample code into your program(s) without
restriction. This Apple sample code has been provided "AS IS" and the
responsibility for its operation is yours. You are not permitted to
redistribute this Apple sample code as "Apple sample code" after having
made changes. If you're going to redistribute the code, we require
that you make it clear that the code was descended from Apple sample
code, but that you've made changes.
*)


--set the source_folder to choose folder with prompt "Folder containing items to edit:"

-- get the path to the folder of the front window
-- if no windows are open, the desktop folder will be used
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


Filed under: Finder, replace, item, names

Offline

 

#3 2015-01-16 10:05:37 am

tbconnor
Member
Registered: 2015-01-15
Posts: 2

Re: Replace Text In Item Names

Thank you!

Offline

 

Board footer

Powered by FluxBB

RSS (new topics) RSS (active topics)