[GastForen Programmierung/Entwicklung AppleScript komplexe kopierfunktion

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

komplexe kopierfunktion

Anonym
Beiträge gesamt: 22827

9. Mär 2008, 22:14
Beitrag # 1 von 45
Bewertung:
(4223 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo zusammen,

vorab: um mein anliegen zu veranschaulichen habe ich einen screenshot angehangen.

frage: ist es möglich an den ordner bildeingang aus dem beispiel eine folderaction anzuhaengen die:
1: die eingehenden bilddateien in den unterordnern erfasst
<b>2: diese bilddateien in einen feststehenden (immer gleichen: server x:online: ) ordner auf einem anderen servervolume kopiert</b>
3: diese datei <b>dort</b> wie folgt umbenennt: zuerst die ersten beiden buchstaben aus dem zweiten untergeordneten ordner also "az" (muss ausgelesen werden, da es auch "an" oder "re" lauten kann ...)dann die buchstaben aus dem ordner in dem sie liegen, hier "a1" (das koennen bis zu 4 buchstaben sein) und schliesslich den namen der originalbilddatei
4: zu guter letzt duerfte der name hoechstens 32 zeichen lang sein. die ueberzaehligen zeichen koennen von hinten gekuerzt werden.

tja, das ist alles ;-)

cu

hans

edit: die gif-datei lässt sich nicht anhaengen :(

also:
bildeingang:
  bildeingang_4c:
az_120308:
    a1:
        bilddatei_01.jpg
  bildeingang_sw:
az_120308
    a1:
        bilddatei_02.jpg
**bildeingang_4c und bildeingang_sw liegen auf einer ebene!
X

komplexe kopierfunktion

Hans Haesler
  
Beiträge gesamt: 5826

10. Mär 2008, 09:48
Beitrag # 2 von 45
Beitrag ID: #422301
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

eine Ordneraktion kann nur den Ordner überwachen, an welchen sie angehängt ist. Bewegungen in Unterordnern können demnach nicht festgestellt werden. Deshalb muss dasselbe Script an jeden Unterordner angehängt werden.

Die Ordnerstruktur ist soweit klar. Bis auf die Zeichen "az". Wo findet man diese?

Gruss, Hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Anonym
Beiträge gesamt: 22827

10. Mär 2008, 11:23
Beitrag # 3 von 45
Beitrag ID: #422302
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi hans,

ich habe die struktur im ersten posting ergaenzt ... sorry.
die ordneraktionen muessten also an die einzelnen ordner oberhalb des tagesordners angehangen werden: a1, a2, a3 usw. richtig?

alles unter leopard uebrigens ...

schönen tag noch :)

cu

hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Hans Haesler
  
Beiträge gesamt: 5826

10. Mär 2008, 11:37
Beitrag # 4 von 45
Beitrag ID: #422303
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

wo ist oben, wo ist unten? Das Script muss an jeden Ordner gehängt werden, welcher die Bilddateien empfängt.

Ich kann aber erst heute Abend versuchen, eine erste Lösung zu scripten. Doch vielleicht kommst Du mir dabei zuvor. :-)

Gruss, Hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Hans Haesler
  
Beiträge gesamt: 5826

10. Mär 2008, 21:21
Beitrag # 5 von 45
Beitrag ID: #422304
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

und hier ist der erste Versuch.
Code
on adding folder items to hotFolder after receiving itemList 
  set targetFolder to "server_x:online:"
  try
    targetFolder as alias
  on error
    with timeout of 300 seconds
      set targetFolder to (choose folder with prompt ¬
        "Einen Zielordner für die Dateien wählen.") as Unicode text
    end timeout
  end try
  repeat with aFile in itemList
    set AppleScript's text item delimiters to ":"
    set filePath to aFile as Unicode text
    set baseName1 to text 1 thru 2 of (text item -3 of filePath)
    set baseName2 to text item -2 of filePath
    set oldName to text item -1 of filePath
    set AppleScript's text item delimiters to "."
    if (count of text items of oldName) is greater than 1 then
      set baseName3 to text items 1 thru -2 of oldName
      set curSuff to "." & (text item -1 of oldName)
    else
      set baseName3 to oldName
      set curSuff to ""
    end if
    set newName to baseName1 & "_" & baseName2 & "_" & baseName3
    if (count of newName) is greater than 27 then
      set newName to (text 1 thru 27 of newName) & curSuff
    else
      set newName to newName & curSuff
    end if
    try
      tell application "Finder" to duplicate file aFile to folder targetFolder with replacing
      try
        tell application "Finder" to set name of file oldName of folder targetFolder to newName
      end try
      try
        tell application "Finder" to delete file aFile
      end try
    end try
  end repeat
  set AppleScript's text item delimiters to {""}
end adding folder items to

Der Dialog kommt nur, wenn der Zielordner nicht gefunden werden kann.
Das aktuelle Suffix wird nur aufgrund des letzten Punktes im Dateinamen bestimmt.
Der Test der Anzahl Zeichen ist auf 27 eingestellt. Weil noch vier Zeichen für die Endung einberechnet werden müssen und das Total nicht mehr als 31 betragen sollte.

Gruss, Hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Anonym
Beiträge gesamt: 22827

11. Mär 2008, 07:27
Beitrag # 6 von 45
Beitrag ID: #422305
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
:)

lokal getestet: funktioniert wunderbar!!

so im groben haben ich den ablauf jetzt auch verstanden ... hoffe ich ... ;-)

noch eine frage: kann ich den start verzögern? wenn ich zwischen die erste und zweite zeile z.b. ein delay 30  setzte, dann werden nicht alle dateien abgearbeitet¿

besten dank!


als Antwort auf: [#422300]

komplexe kopierfunktion

Hans Haesler
  
Beiträge gesamt: 5826

11. Mär 2008, 07:59
Beitrag # 7 von 45
Beitrag ID: #422306
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

bitteschön. Nun, der Code ist eigentlich selbsterklärend. :-)

Zum Ermitteln des Zielordner-Pfades ist dieses Script hilfreich:
---
set folderPath to (choose folder) as Unicode text
display dialog "Ordnerpfad" default answer folderPath
---
Oder: Ganz einfach den Ordner in ein leeres Fenster des Skripteditors ziehen. Die Warnung: "Achtung: Wollen Sie wirklich den Inhalt der verschobenen Objekte in den Text kopieren?" mit Klick auf "Kopieren" bestätigen.

Man muss allerdings das Ergebnis editieren: Den Namen der Harddisk davorsetzen und die Bruchstriche durch Doppelpunkte ersetzen.

Deine erste Frage muss ich mit einer Gegenfrage beantworten: Weshalb soll der Start verzögert werden? Ist der Satz mit dem 'delay' eine Feststellung oder auch eine Frage? Hast Du einen entsprechenden Versuch unternommen?

Gruss, Hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Anonym
Beiträge gesamt: 22827

11. Mär 2008, 08:20
Beitrag # 8 von 45
Beitrag ID: #422307
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
guten morgen hans

wg. dem pfad hatte ich mir schon so beholfen:

set targetFolder to (choose folder with prompt ¬
    "Einen Zielordner für die Dateien wählen.")
display dialog targetFolder as string

funktionierte sogar:)

die verzoegerung mit delay moechte ich einsetzen um sicherzugehen, dass die datei uebers netz auch vollstaendig uebertragen ist – kann vereinzelt schonmal ein paar sekunden dauern. geht bestimmt auch eleganter, aber eine verzoegerung von ca. 30 sek. zur sicherheit waere nicht schlecht.

ich hab's mit dem delay 30 in der zweiten zeile getestet: es wird dann immer nur einer von mehreren ueberwachten ordnern abgearbeitet¿

<b>edit: nein, stimmt nicht! </b> es dauert dann nur sehr lange ... sorry


als Antwort auf: [#422300]

komplexe kopierfunktion

Hans Haesler
  
Beiträge gesamt: 5826

11. Mär 2008, 09:18
Beitrag # 9 von 45
Beitrag ID: #422308
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

falls es zu lange dauert, kannst Du ja mit einem kürzeren delay-Wert experimentieren. Vielleicht ist dieser überhaupt nicht notwendig.

Zum Anzeigen des Ordnerpfades: Mit einem normalen 'display dialog' wird zwar der Pfad angezeigt. Aber dann muss man diesen abtippen. Wenn man die Variable als 'default answer' einsetzt, dann steht der Pfad in einem Texteingabefeld und kann kopiert werden.

Gruss, Hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Anonym
Beiträge gesamt: 22827

11. Mär 2008, 20:02
Beitrag # 10 von 45
Beitrag ID: #422309
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von author="Hans Haesler" Oder: Ganz einfach den Ordner in ein leeres Fenster des Skripteditors ziehen. Die Warnung: "Achtung: Wollen Sie wirklich den Inhalt der verschobenen Objekte in den Text kopieren?" mit Klick auf "Kopieren" bestätigen.
Man muss allerdings das Ergebnis editieren: Den Namen der Harddisk davorsetzen und die Bruchstriche durch Doppelpunkte ersetzen.


Das läßt sich auch umgehen, indem man
Code
posix file "" 

ins frische Scripteditor-Fenster schreibt, und den Ordner zwischen die doppelten Anführungen dropt. Nach dem "Übersetzen" des Scripts wird der Pfad dann in einen Mac-Pfad incl. Disk-Namen konvertiert.


als Antwort auf: [#422300]

komplexe kopierfunktion

Anonym
Beiträge gesamt: 22827

12. Mär 2008, 09:28
Beitrag # 11 von 45
Beitrag ID: #422310
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo hans,

du hast bei fachhefte.ch ein script hinterlegt, dass per dra'n drop eine definierte ordneraktion anhaengt. ist es moeglich das so anzupassen, das es dieses sript an alle unterordner ein ordners anhaengt?
du hast mir so ein script mal fuer os9 geschrieben; funktionierte wunderbar!

schau mal

gruesse
hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Hans Haesler
  
Beiträge gesamt: 5826

12. Mär 2008, 09:51
Beitrag # 12 von 45
Beitrag ID: #422311
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

wie heisst das Script, welches auf http://www.fachhefte.ch zur Verfügung steht?

Für Deine Anwendung müsste das Ordneraktions-Script nicht an jeden Unterordner, sondern nur an den letzten in der Kette – an jenen welcher die Dateien empfängt – gehängt werden. Oder nicht?

Ich werde heute Abend versuchen, das Mac-OS-9-Script zu finden und an Leopard anzupassen.

Gruss, Hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Anonym
Beiträge gesamt: 22827

12. Mär 2008, 10:20
Beitrag # 13 von 45
Beitrag ID: #422312
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ich koennte dir beide scripte zusenden wenn du mir deine emailadresse per pm sendest :)

der vorgang:
in einem ordner sind 5-8 unterordner. an alle diese unterordner soll  das Ordnerscript angehangen werden.


als Antwort auf: [#422300]

komplexe kopierfunktion

Hans Haesler
  
Beiträge gesamt: 5826

12. Mär 2008, 10:40
Beitrag # 14 von 45
Beitrag ID: #422313
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

wenn alle Unterordner auf derselben Ebene sind, dann ist es okay.

Ein E-Mail an Dich ist unterwegs.

Gruss, Hans


als Antwort auf: [#422300]

komplexe kopierfunktion

Hans Haesler
  
Beiträge gesamt: 5826

12. Mär 2008, 22:55
Beitrag # 15 von 45
Beitrag ID: #422314
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

danke für die Dateien. Aber zwei davon sind unterwegs entfernt worden und die dritte hat beim ungeschützten Transport die Infos verloren unfd kann nicht geöffnet werden.

Ich muss morgen auf den alten Rechner am Arbeitsplatz nach dem einen Script suchen. Und vielleicht kannst Du mir sagen, wo sich das andere auf http://fachhefte.ch befindet.

Gruss, Hans


als Antwort auf: [#422300]
X