Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
bernd •->

Anmeldedatum: 28.01.2002 Beiträge: 3
|
Verfasst am: 29.01.2002 - 01:35 Titel: kopie einer datei unter neuem namen |
|
|
Ich erstelle gerade ein script, das u.a. eine datei kopiert und ihr einen neuen namen zuweist. Im prinzip ist das ja kein problem:
copy item vorlagenDatei to folder zielOrdner
set the name of file dateiName of folder zielOrdner to neuerDateiname
Dabei ist 'vorlagenDatei' die kopiervorlage, 'zielordner' irgendein ordner, der vorab vom user selectiert wurde und 'neuerDateiname' ein definierter neuer name für die datei. Soweit, so gut.
Das problem ist der dateiname der kopie. Bei deutscehm OS heißt die kopierte datei "originalname Kopie", bei englischem "originalname Copy" usw...
Ich muss auch andere tests fahren, um herauszubekommen, wie die kopie heißen wird, bevor ich sie kopiere, um im anschluss nicht die falsche zu erwischen. Liegt beispielsweise in einem ordner als vorlagendatei die datei "test.txt" und bereits eine weitere datei mit dem namen "test.txt Kopie", heißt die kopie "test.txt Kopie Kopie" usw...
Ähnliche probleme gibt es bei langen dateinamen...
Meine frage ist nun:
Kann ich den namen der kopie von vorneherein bestimmen?
Also in etwa so: kopiere die datei x in den ordner mit den neuen namen y
Geht das irgendwie?
Ferner ist mir der unterschied von 'copy' und 'duplicate' nicht so ganz klar. Kann mir das jemand erklären? |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 29.01.2002 - 10:23 Titel: kopie einer datei unter neuem namen |
|
|
Moin,
fangen wir am Ende an. Wg. 'copy' und 'duplicate' hatten wir schon einmal einen Thread. Ich war seinerzeit ein wenig überrascht denn das Finder-Dictionary der Classic-Umgebung (Finder Vers. D2 9.2) gibt folgende Auskunft:
copy : Copy the selected items to the clipboard (the Finder must be the front application)
copy -- no direct parameter required
Ich würde zumindest im klassischen OS 'duplicate' bzw. 'move' verwenden. Zu OS X müssen Andere Auskunft geben.
Nun zur Ausgangsfrage. Wiederum ein Ausschnitt aus dem Finder-Dictionary (jaja, ruhig mal reinschauen und lesen!)
duplicate : Duplicate one or more object(s)
duplicate reference -- the object(s) to duplicate
[to location reference] -- the new location for the object(s)
[replacing boolean] -- Specifies whether or not to replace items in the destination that have the same name as items being duplicated
[routing suppressed boolean] -- Specifies whether or not to autoroute items (default is false). Only applies when copying to the system folder.
Result : reference -- to the duplicated object(s)
Und siehe da, wir erhalten als result eine reference auf die neuen Objekte. Aufgrund der reference sollte es nun kein Problem mehr sein den entsprechenden Namen zu erhalten, oder?
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
bernd •->

Anmeldedatum: 28.01.2002 Beiträge: 3
|
Verfasst am: 29.01.2002 - 11:53 Titel: kopie einer datei unter neuem namen |
|
|
Erstmal danke für die schnelle antwort.
Da ich momentan nur ganz kurz zeit habe eine verständnissfrage:
Es ist also so, dass ich zuerst die datei über 'duplicate' dupliziere und dann über die referenz (alias???) die datei umbenenne. Eine vorherige vergabe des namens ist offenbar nicht möglich. Ist das richtig? |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 29.01.2002 - 12:20 Titel: kopie einer datei unter neuem namen |
|
|
Ja, so ist es, zumindest lt. Finder-Dictionary.
(Geändert von Folker um 11:22 Uhr am 29 Jan. 2002)
Achso, die referenz ist ein alias-Verweis. Via 'as string' ('as text') könntest Du einen Pfad in Textform erhalten. Ist aber nicht nötig in diesem Fall!
set temp to (choose file)
tell application "Finder" to set name of (duplicate temp) to "neu.txt"
(Geändert von Folker um 11:26 Uhr am 29 Jan. 2002)
(Geändert von Folker um 11:27 Uhr am 29 Jan. 2002) _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
bernd •->

Anmeldedatum: 28.01.2002 Beiträge: 3
|
Verfasst am: 29.01.2002 - 18:35 Titel: kopie einer datei unter neuem namen |
|
|
Vielen dank folker, das war genau das, was ich wollte!
(*------ snip ------*)
set x to 1
repeat (number of items of the dateiNamenListe) times
try
tell application "Finder" to set name of (duplicate item vorlagenDatei to folder zielOrdner without replacing) to ¨
((item x of the dateiNamenListe) & dateiSuffix)
on error
display dialog "Fehler beim Anlegen der Datei " & return & (item x of the dateiNamenListe) buttons "OK" default button 1
return
end try
set x to (1 + x)
end repeat
(*------ snip ------*)
Der vorgang ist nun nicht nur schneller, sondern das script ist auch wesentlich kürzer und übersichtlicher geworden, da ich nun weniger überprüfungen machen muss.
Jedenfalls bin ich begeistert, was alles so möglich ist. Das script, an dem ich mich gerade versuche, tut folgendes:
- auslesen einer textdatei, in der pro zeile ein dateiname steht (ca. 2500 dateinamen!)
- duplizieren einer vorlagendatei und benennen mit einem neuen dateinamen aus der liste
- optional anhängen eines suffix
- schreiben einer logdatei
Ich muss dazu sagen, dass ich mich erst seit kurzem mit applescript beschäftige. Meine vorgehensweise ist dabei sehr pragmatisch - soll heißen, ich ging bisher mit den kenntnissen, die ich von lingo, supercard und javascript her habe an die scripte heran und versuchte mich anhand von beispielscripten, die ich so fand, an den gewünschten effekt heranzutasten, bzw den einen oder anderen arbeitsschritt zu automatisieren.
An dieser stelle endete bis jetzt mein ehrgeiz. Nun möchte ich etwas tiefer einsteigen, weshalb ich nun auch das forum nutze.
Dummerweise kursieren im netz eine menge an scripten, die ziemlich umständlich geschrieben sind. Gerade für mich als anfänger sind sie häufig irreführend, da sie kaum oder schlecht kommentiert sind, bzw. bescheuert geschrieben sind. Die art und weise, eine datei zu duplizieren, und dann dem duplikat ("originalname Kopie") nachträglich einen neuen namen zu geben, habe ich von einem anderen script (incl. der prüfroutinen bezüglich des duplikatnamens) übernommen. Der vorschlag von Dir ist da nicht nur wesentlich eleganter, sondern eleminiert auf die schnelle mal gut und gerne 10 zeiel code und läuft auch tatsächlich schneller. Erst langsam komme ich so an den punkt, die spreu vom weizen trennen zu können. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|
|
|