hilfdirselbst.ch
Facebook Twitter gamper-media
Mac OS X enthält verschiedene integrierte Werkzeuge und Technologien, mit denen sich gängige Aufgaben schnell und einfach automatisieren lassen.
Anonym
Beiträge: 22827
19. Aug 2003, 14:41
Beitrag #1 von 7
Bewertung:
(1864 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Ordner überwachen mit AppleScript


Hallo,
ich suche folgende Lösung:
ein Ordner soll überwacht werden. Sobald dort eine Datei abgelegt wird, soll diese zu ihrem Namen einen Zusatz bekommen; aber kein Suffix. Ist das über AppleScript möglich, wenn ja wie?

Danke für die Hilfe Top
 
X
Hans Haesler  M  p
Beiträge: 5474
19. Aug 2003, 17:35
Beitrag #2 von 7
Beitrag ID: #418257
Bewertung:
(1863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Ordner überwachen mit AppleScript


Hallo Uwe,

ja, das ist möglich. Und zwar mit einem Script, welches als "Ordneraktion" an den Ordner
angehängt werden kann.

Kannst Du bitte genauere Angaben machen: Welches Mac OS? Ist der Zusatz immer derselbe?
Oder wird er vom Namen oder von der Uhrzeit abgeleitet?

Hans Haesler, hsa@ringier.ch
als Antwort auf: [#418256] Top
 
Anonym
Beiträge: 22827
20. Aug 2003, 06:05
Beitrag #3 von 7
Beitrag ID: #418258
Bewertung:
(1863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Ordner überwachen mit AppleScript


Hallo Hans,
ich arbeite mit Mac OS 9. Der Zusatz soll immer der gleiche sein (z.B. Dokumentname_N).

Gruß
Uwe
als Antwort auf: [#418256] Top
 
Hans Haesler  M  p
Beiträge: 5474
20. Aug 2003, 08:56
Beitrag #4 von 7
Beitrag ID: #418259
Bewertung:
(1863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Ordner überwachen mit AppleScript


Hallo Uwe,

okay, haben wir gleich. Ein Ordneraktions-Script, welches sich um hinzugefügte Dateien kümmern soll,
beginnt immer mit...
Code
on adding folder items to thisFolder 

... wobei man anstelle von 'thisFolder' auch eine ander Bezeichnung setzen kann.

Damit die neu hinzugefügten Dateien von den schon vorhandenen unterschieden werden können, muss in der
ersten Zeile der Zusatz 'after receiving itemList' angehängt werden. Auch hier kann der Name der Variablen
anders lauten.

Diese Variable enthält eine Liste der Dateien, welche in den Ordner gelegt werden. Und zwar sind es Pfade
im Alias-Format, z.B. "alias "Macintosh HD:Desktop Folder:InFolder:Dateiname".

Im Script werden die Variablen 'ctr' und 'addOn' definiert. Die Zählervariable, um eventuelle Probleme melden
zu können und die zweite enthält den Zusatz.

In einer Repeat-Schleife wird die Alias-Liste abgearbeitet. Diese Aliasse müssen in Strings verwandelt werden 
('set fullPath to (aFile as string)'), damit man den Pfad zur Datei und den Namen der Datei ausziehen kann.
Zuerst wird noch festgestellt, ob der Pfad mit einem Doppelpunkt endet. Dann wäre das Objekt ein Ordner und
wird ignoriert.

Anschliessend werden die 'text item delimiters' als Doppelpunkt definiert. Damit kann der Pfad in die
einzelnen Elemente aufgegliedert werden. Mit 'set filePath to text items 1 thru -2 of fullPath' wird der Pfad
bis und mit "Hotfolder" in die Variable 'filePath' gegeben. Und mit 'set oldName to text item -1 of fullPath'
wird das letzte (= -1) Element der Kette, der Dateiname gespeichert.

Wenn zwei Zeichen angehängt werden sollen, dann muss dieser Name kürzer als 30 Zeichen sein. Dies wird mit
'if (count oldName) < 30' geprüft. Falls okay, wird der neue Name und der neue komplette Pfad zusammengesetzt.

Im 'try/on error'-Block wird mit 'newPath as alias' geprüft, ob eine Datei mit diesem Namen schon existiert.
Wenn ja, wird die 'ctr'-Variable um eins erhöht und die alte Datei wird nicht umbenannt. Wenn noch keine Datei
mit dem neuen Namen existiert, dann wird ein Fehler generiert und das Script sagt dem Finder, dass er die
Datei umbenennen soll.

Am Schluss werden die 'text item delimiters' auf einen leeren String gesetzt. Wenn die Zählervariable 'ctr'
grösser als Null ist, dann wird mit einem Dialog die Anzahl Probleme angezeigt.
---
on adding folder items to thisFolder after receiving itemList
  set ctr to 0
  set addOn to "_N"
  repeat with aFile in itemList
    set fullPath to (aFile as string)
    if fullPath ends with ":" then
    else
      set AppleScript's text item delimiters to {":"}
      set filePath to text items 1 thru -2 of fullPath
      set oldName to text item -1 of fullPath
      if (count oldName) < 30 then
        set newName to oldName & addOn
        set newPath to (filePath & newName) as string
        try
          newPath as alias
          set ctr to ctr + 1
        on error
          tell application "Finder" to set name of file fullPath to newName
        end try
      else
        set ctr to ctr + 1
      end if
    end if
  end repeat
  set AppleScript's text item delimiters to {""}
  if ctr > 0 then
    display dialog "Anzahl Probleme: " & ctr buttons "OK" default button 1 with icon 2
  end if
end adding folder items to
---
Dieses Script als normales, kompiliertes Script in einen Ordner (nicht in jenen, in welchen die Dateien, die umbenannt
werden sollen, gelegt werden) auf der Harddisk sichern.

Dann dem "Hotfolder" die Ordneraktion zuweisen: Die Control-Taste niederhalten, den Mauszeiger im Finder auf den
geschlossenen In-Ordner richten und die Maustaste betätigen. Im sich öffnenden Kontext-Menü die Zeile "Aktion an
Ordner anfügen..." auswählen. Darauf öffnet sich ein Dialogfenster, in welchem das Script ausgewählt werden muss.

Achtung: Damit das Ganze funktioniert, muss der In-Ordner geöffnet sein.

Hans Haesler, hsa@ringier.ch
als Antwort auf: [#418256] Top
 
Anonym
Beiträge: 22827
20. Aug 2003, 10:27
Beitrag #5 von 7
Beitrag ID: #418260
Bewertung:
(1863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Ordner überwachen mit AppleScript


Hallo Hans,
vielen Dank für die schnelle Hilfe. Das Script funktioniert tadellos. Ist es denn auch möglich einen Ordner auf einem Server-Volume (Helios) zu überwachen?

Gruß
Uwe
als Antwort auf: [#418256] Top
 
Hans Haesler  M  p
Beiträge: 5474
20. Aug 2003, 10:48
Beitrag #6 von 7
Beitrag ID: #418261
Bewertung:
(1863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Ordner überwachen mit AppleScript


Hallo Uwe,

bitte sehr. Zu Deiner Frage kann man sagen: "Probieren geht über studieren". ;-)
Ich habe es gerade versucht: es klappt!

Hans Haesler, hsa@ringier.ch
als Antwort auf: [#418256] Top
 
Hans Haesler  M  p
Beiträge: 5474
21. Aug 2003, 12:26
Beitrag #7 von 7
Beitrag ID: #418262
Bewertung:
(1863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Ordner überwachen mit AppleScript


Eine kleine Verbesserung: statt die Länge des alten Dateinamens mit einem variablen Wert zu testen...
Code
if (count oldName) < 30 then 

... kann die Anzahl Zeichen des Zusatzes miteinbezogen werden:
Code
if (count oldName) + (count addOn) < 32 then 

Vorteil: wenn die Länge des Zusatzes ändert, muss man nicht daran denken, auch den Test zu ändern.

Je nach Aufgabe, kann es auch nützlich sein, einen Dialog einzubauen, welcher erlaubt, den Zusatz zu
ändern, ohne das Script editieren zu müssen. Die Variable 'addOn' ist als 'property' definiert. Dadurch
wird die letzte Einstellung wird gespeichert und wird bei erneutem Aufruf angezeigt. Achtung: ich habe
bemerkt, dass diese Speicherung nicht funktioniert, wenn das Script im Skripteditoren geöffnet ist.
---
property addOn : "_N"

on adding folder items to thisFolder after receiving itemList
  showConfig()
  set ctr to 0
  repeat with aFile in itemList
    set fullPath to (aFile as string)
    if fullPath ends with ":" then
    else
      set AppleScript's text item delimiters to {":"}
      set filePath to text items 1 thru -2 of fullPath
      set oldName to text item -1 of fullPath
     if (count oldName) + (count addOn) < 32 then
        set newName to oldName & addOn
        set newPath to (filePath & newName) as string
        try
          newPath as alias
          set ctr to ctr + 1
        on error
          tell application "Finder" to set name of file fullPath to newName
        end try
      else
        set ctr to ctr + 1
      end if
    end if
  end repeat
  set AppleScript's text item delimiters to {""}
  if ctr > 0 then
    display dialog "Anzahl Probleme: " & ctr buttons "OK" default button 1 with icon 2
  end if
end adding folder items to

on showConfig()
  set dR to (display dialog "Der Zusatz lautet: |" & addOn & &not;
    "|" buttons {"Abbruch", "Ändern", "OK"} default button 3)
  if button returned of dR = "Ändern" then modConfig()
end showConfig

on modConfig()
  set addOn to text returned of (display dialog "Neuer Zusatz:" default answer addOn)
  showConfig()
end modConfig
---
Mit 'showConfig' wird der Dialog gezeigt. Der Zusatz steht zwischen zwei senkrechten Zeichen, damit
eventuelle Leerräume auch sichtbar werden. Wenn der Anwender auf "Ändern" klickt, wird eine neuer
Dialog gezeigt, in welchem er den Zusatz ändern kann. Auf "OK" wird nochmals der erste Dialog gezeigt,
damit man die Möglichkeit hat, einen Irrtum zu korrigieren.

Natürlich macht das Anzeigen dieser Dialoge nur Sinn, wenn der Zusatz nicht fix ist.

Hans Haesler, hsa@ringier.ch
als Antwort auf: [#418256] Top
 
X