Byta namn på många filer?

Tråden skapades och har fått 21 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Motala
  • 2006-12-24 22:58

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.

  • Medlem
  • Stockholm
  • 2006-12-25 01:05

mv i terminalen eller med R-name.

  • Medlem
  • Stockholm
  • 2006-12-25 03:22

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.

Om man har köpt Graphic Converter kan man använda batchuppdatering för att byta namn på flera filer inklusive numrering mm.

  • Medlem
  • Stockholm
  • 2006-12-25 12:24

Automator fungerar finfint till detta, precis som du säger!

  • Medlem
  • Kungsbacka
  • 2006-12-30 00:29

Automator känns bortglömt, fastän att det är helt underbart!

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....

  • Medlem
  • 2008-05-01 23:08
Ursprungligen av klarabara:

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?

  • Medlem
  • Göteborg
  • 2008-05-02 00:59

jag kör med Name Mangler http://www.manytricks.com/namemangler .

som sagt..jag vill inte installera något program för det.

Ursprungligen av klarabara:

som sagt..jag vill inte installera något program för det.

Ursprungligen av klarabara:

...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?

  • Medlem
  • 2008-05-02 01:21

Det där är inget applescript, det är ett automatorskript. Men det går visserligen att läsa in applecript i Automator.

åh.. som du nog listat ut är jag ingen hejare på det där med script.. vet inte ens hur man skapar apple-script och vad de kan göra?

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...

  • Medlem
  • Göteborg
  • 2008-05-02 10:47

Om att inte installera nya program

Ursprungligen av klarabara:

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 .

  • Medlem
  • 2008-05-02 10:37

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.

  • Medlem
  • 2008-05-02 11:38

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.
Baron@99.se
*)

-- 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
*)

WOW! Tack så mycket!!

1
Bevaka tråden