- widde
- Medlem ●
- Motala
Hur byter man enklast namn på många filer i OSX?
Är det enklaste sättet att skapa ett arbetsflöde med automator eller finns det något bättre sätt? Jag har inte riktigt kommit underfund med hur automator fungerar helt än .. Vore smidigt om det gick att lösa på något annat sätt
I mappen /Library/Scripts/Finder Scripts ligger det Applescripts som byter namn på filer.
Add to File Names.scpt
Add to Folder Names.scpt
Change Case of Item Names.scpt
Replace Text in Item Names.scpt
Trim File Names.scpt
Trim Folder Names.scpt
Markera filerna och kör sedan skriptet eller dra alla filerna till manusikonen.
Det finns ett mycket bra program som heter "A better Finder rename".
Man markerar filerna, högerklickar och väljer programmet. Då får man massor av val - tex "replace anywhere" där man får skriva in en fras som man vill ersätta med en annan - eller tex "Produce numbered list" som gör att alla filnamn börjar med en unik siffra, etc.
När man gjorde det här i windows så var det så enkelt.
Jag hade fem bilder på bilar. De hette olika saker redan. Markerade alla bilder med bilar och valde "Rename" genom att högerklicka.
Skrev "Bil" sen blev alla filerna "Bil (2)" "Bil (3)".. o så vidare.
Nu har jag försökt i Finder att göra så med ett skript.. men det blir ju inte samma sak.. för man måste bestämma på förhand att det ska bli Bil, annars måste man välja ett nytt ord och göra ett nytt script varje gång? Eller?
Hur kan jag göra det här så enkelt som det borde vara?
ps. Jag vill inte installera ännu ett program för att fixa det här....
Nu har jag försökt i Finder att göra så med ett skript.. men det blir ju inte samma sak.. för man måste bestämma på förhand att det ska bli Bil, annars måste man välja ett nytt ord och göra ett nytt script varje gång? Eller?
Vilket skript använder du?
Visar enklast med en skärmdump..
Lägger till ett nytt namn i skriptet.. men det betyder ju också att man måste modifiera samma skript varje gång man vill ändra namn på en grupp bilder..Det blir inte särskilt spontant om man säger så?
Det måste väl finnas något bättre sätt än det här?
som sagt..jag vill inte installera något program för det.
...som du nog listat ut är jag ingen hejare på det där med script...
Varför inte program? Om du har problem med scriptet, och det finns jättebra gratisprogram (se tips tidigare i tråden, t.ex. R-Name eller NameMangler), varför inte prova något av dessa?
Jag tycker bara att det borde finnas något sätt i finder att göra något sådant? Det behöver liksom inte vara så fancy, bara Bil (1) Bil (2) Bil (3).. Tycker det är väldigt underligt att man inte kan göra det lika enkelt som på windows.
Verkligen.
Jag misstror inte program, men har det som en vana att inte installera något som jag inte verkligen behöver också om några veckor.
Och jag hoppades verkligen att det här skulle vara inbyggt redan, det är så basic...
Jag misstror inte program, men har det som en vana att inte installera något som jag inte verkligen behöver också om några veckor.
Det där låter som jag brukade tänka, någon gång för länge sedan. Det var när varje programinstallation föregicks med böner om att installationen denna gång inte skulle sluta i katastrof. Det var på en tid då jag fick klicka på start för att avsluta .
Basic och basic... För de flesta är det kanske inte så basic. Det är basic för en windowsanvändare som föredrar filsystemet framför riktad programvara.
Apple siktar dels på konsumenter, med iPhoto, och dels på proffs med Aperture. Nu kan jag inte Aperture, men jag gissar att sådant här går att lösa där.
DU har ju själv gått och och tyckt till i den här tråden. Den handlar om just detta.
Adobe Bridge går bra också...
aja, det går hursom inte att göra det jag vill med något klurigt kort-kommando eller genväg som inte jag känner till så.. tråkigt. Kommer från windows, tyckte det var basic. Bara att ta ett gäng filer, byt namn på en. Win byter namnet på gänget.
Tänkte att finder hade lite samma funktion som Explorer..fixa med filerna o sånt..
Roligt att se att det finns apple-script och automator-script. Det förra är nog för avancerat för mig men det är ändå bra att veta vad som finns.
Tack så mycket för hjälpen.
Klistra in nedanstående kod i ett nytt dokument i programmet Manusredigeraren. Spara sedan antingen som manus(paket) eller program(paket). Ett program är lättare att köra om man är ovan vid skript. Ett manus kan man å andra sidan köra inifrån andra program, i skriptmenyn.
Jag har lagt in några parametrar i början som du själv kan slå av och på utifrån vad du vill att skriptet ska göra.
-- För att slå av eller på en funktion byter man ut false mot true eller tvärt om. -- Vill du få frågan om både fil- och/eller mappnamn ska ersättas? set byt_fil_och_mappnamn to true -- Vill du välja vilken mapp som ska behandlas? Ändra till false så tar den -- det översta öppna Finderfönstret eller skrivbordet om inga fönster är öppna. set visa_dialog_om_mappval to true -- Vill du slippa definiera vad som ska strykas? set ta_alltid_bort_samma_sak to false -- Om ja, definiera här vad som alltid ska strykas. Just nu är det: DSC_ set mitt_gamla_filnamn to "DSC_" -- Vill du få en bekräftelse på vad som kommer att bytas ut mot vad? set verifiera_vad_som_byts_ut to true (* 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. ----- Code is modified May 2, 2008 to make simple adjustments easier. Original code commented below modified. [email protected] *) -- Välj källmapp try if visa_dialog_om_mappval is true then set the source_folder to (choose folder with prompt "Välj mapp vars innehåll du vill ändra filnamn på:") else if visa_dialog_om_mappval is false then tell application "Finder" to set the source_folder to (folder of the front window) as alias end if on error -- no open folder windows set the source_folder to path to desktop folder as alias end try -- Ska både fil- och mapnamn bytas ut? if byt_fil_och_mappnamn is true then 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 "Sök och ersätt namn på:" buttons {"Filer", "Mappar", "Båda"} default button 3 set the search_parameter to the button returned of the result else if byt_fil_och_mappnamn is false then set the search_parameter to "Filer" end if -- Definiera vad som ska bort if ta_alltid_bort_samma_sak is false then repeat display dialog "Vad vill du ersätta i de befintliga filnamnen:" 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 else if ta_alltid_bort_samma_sak is true then set search_string to mitt_gamla_filnamn end if -- Definiera det nya namnet repeat display dialog "Vad vill du att de nya filnamnen ska innehålla:" 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 "En fils eller mapps namn kan inte innehålla kolon (:)." buttons {"Cancel", "OK"} default button 2 else if the replacement_string contains "/" then beep display dialog "En fils eller mapps namn kan inte innehålla snedstreck (/)." buttons {"Cancel", "OK"} default button 2 else exit repeat end if end repeat -- Verifiera namnbytet if verifiera_vad_som_byts_ut is true then display dialog "Vill du byta ut “" & the search_string & "” mot “" & the replacement_string & "” i alla filnamn?" buttons {"Cancel", "OK"} default button 2 end if 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 "Mappar" and ¬ folder of this_info is true then set the change_flag to true else if the search_parameter is "Filer" and ¬ folder of this_info is false then set the change_flag to true else if the search_parameter is "Båda" 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 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 "Namnet innehåller ogiltiga tecken, tex kolon (:)." 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 "En fil med detta namn finns redan. Välj ett annat." 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 (* --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 *)