Dateien kopieren und nummerieren.

infach

infach

Aktives Mitglied
Thread Starter
Dabei seit
30.11.2005
Beiträge
185
Reaktionspunkte
1
Hallo,
ich möchte alle Dateien aus allen Unterordnern eines Ordners in EINEN neuen Ordner kopieren und die Dateien dabei umbenennen. Und zwar einfach in Datei0001.JPG - wobei die Zahl halt durchzählen soll.
Für das kopieren der Dateien hab ich mir schon was zusammen gecopied&pasted, aber der umbenenn/zähl Teil bereitet mir noch sorgen. Kann mir jemand helfen?
Code:
property source_folder : "mac:path:to:enclosing:folder:of:original:data"
property target_folder : "mac:path:to:destination:folder"

tell application "Finder"
	set thedata to entire contents of folder source_folder
	repeat with aItem in thedata
		if class of aItem is not folder then
			copy aItem to folder target_folder
		end if
	end repeat
end tell
Tausend Dank!!! :cake:
 
Hallo,

ich habe Dir schnell eine Beispielroutine getippt:

Code:
tell application "Finder"
	set meinOrdner to "MacBook:TEST:" as string
	set sel to every file of folder meinOrdner
	
	set meinName to "MeinBild-"
	set meinZaehler to 0
	
	repeat with naechsteDatei in sel
		set meinZaehler to meinZaehler + 1
		set name of naechsteDatei to (meinName & meinZaehler & ".jpg") as string
		
	end repeat
	
end tell

Setze die betreffenden Stellen bei Dir ein.

Viel Erfolg!
 
Ciao Infach,
der erste Teil Deines Scripts steht ja schon, die einzige Zeile die Du ändern mußt ist diese:
Code:
copy aItem to folder target_folder
Der Befehl copy funktioniert im Finder noch nicht, und in AS wird er manchmal alternativ zu set zur Definition von Variablen benutzt. Nimm stattdessen duplicate:
Code:
duplicate aItem to folder target_folder

Das Umbenennen kannst Du entweder im gleichen Repeatloop vornehmen oder in einem zweiten Schritt, am Ende des Kopiervorgangs. Zeitlich nimmt sich das nichts, aber persönlich halte ich den getrennten Nominierungsblock für programmiertechnisch übersichtlicher, z.B:
PHP:
tell application "Finder"
	set newFiles to entire contents of target_folder
	set c to count of newFiles
	repeat with i from 1 to c
		set aFile to item i of target_folder
		if i < 10 then
			set name of aFile to ("Datei000" & i & ".JPG")
		else if i >= 10 and i < 100 then
			set name of aFile to ("Datei00" & i & ".JPG")
		else if i >= 100 and i < 1000 then
			set name of aFile to ("Datei0" & i & ".JPG")
		else
			set name of aFile to ("Datei" & i & ".JPG")
		end if
	end repeat
end tell

Frohes scripten
Farid
 
Danke für die vielen Antworten! (Wo ist der neue Dank-Button nochmal?) Ich werde das morgen alles testen.

@chebfarid
Wenn ich erst alles in den Zielordner verschiebe, kann es mir passieren, dass zwei Dateien mit gleichem Namen aufeinandertreffen? Weiss nicht, was dann passiert, irgendne Fehlermeldung wahrscheinlich... Also denke ich, ich mach es besser im selben loop. - Morgen :)
 
Wenn ich erst alles in den Zielordner verschiebe, kann es mir passieren, dass zwei Dateien mit gleichem Namen aufeinandertreffen?
Richtiger Einwand, hab' ich nicht bedacht :D

Frohes scripten
Farid
 
Zurück
Oben Unten