[GastForen Programmierung/Entwicklung AppleScript spezielle ordneraktion

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

spezielle ordneraktion

Anton Kriegler
Beiträge gesamt:

13. Mai 2011, 17:09
Beitrag # 1 von 5
Bewertung:
(2755 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter!
OSX 10.4.11 und Windows Server

Bin gespannt ob Folgendes geht:
Ein Ordner wird automatisch mit einem Unterordner mit fixem automatischem Namen beschrieben.
Dieser soll nun eine Ebene tiefer gelegt werden, und zwar in einen neuen Ordner, den mein Skript übers Netzwerk aus einem externen Verzeichnis herauslesen soll, nämlich immer die ersten sechs Zeichen des aktuellsten Files jenes externen Verzeichnisses (Alias steht auf dem Mac-Desktop).
Hoffentlich war das deutlich ...
Danke für alle Antworten
Anton
X

spezielle ordneraktion

Stibi
Beiträge gesamt: 832

16. Mai 2011, 13:27
Beitrag # 2 von 5
Beitrag ID: #471514
Bewertung:
(2696 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat …automatisch mit einem Unterordner mit fixem automatischem Namen beschrieben.


Ist "fix" und "automatisch" nicht ein Widerspruch?
Könntest Du mal ein konkrete(re)s Beispiel hier rein schreiben?

Gruß Stibi


als Antwort auf: [#471419]

spezielle ordneraktion

Anton Kriegler
Beiträge gesamt:

16. Mai 2011, 14:44
Beitrag # 3 von 5
Beitrag ID: #471526
Bewertung:
(2682 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stibi

Danke fürs Antworten. Es geht um eine Art Archivierung.

Der automatisch eintreffende Ordner hat eine vom System vergebene fixe (zu abstrakte) Prozess-ID-Nummer als Name.

Hier die Aufgabe des Skripts:
Um ihn später wiederzufinden, ohne ihn aber umbenennen zu müssen, soll er nun in einen neuen Ordner gestellt werden. Dessen Name soll gleich lauten wie die ersten sechs Zeichen des neuesten Dokuments in einem anderen Verzeichnis (nämlich die aktuelle Auftrags-Nummer, die dort jedesmal zuvor eintrifft).

Hier ist ein Gehversuch, was aber noch fehlt:

Falls dieser Ordnername schon existiert, dann soll er verwendet werden. (Das entspricht: Es gibt mehrere Teile desselben Auftrages.)

Wie baue ich das ein?

Code
set Abstellplatz to "Macintosh HD:Lager" 
set FolderSelected to choose folder "ordner wählen bitte"
tell application "Finder"
set listofFiles to every file of FolderSelected
end tell
set listn to {}
repeat with aFile in listofFiles
set temp to the name of aFile
set listn to listn & temp
end repeat
set huelse to last item of listn as string
tell application "Finder"
make new folder at Abstellplatz with properties {name:((characters 1 thru 6 of huelse) as string)}
end tell


Nochmals vielen Dank für alle Antworten
Anton


als Antwort auf: [#471514]
(Dieser Beitrag wurde von Anton Kriegler am 17. Mai 2011, 17:30 geändert)

spezielle ordneraktion

Hans Haesler
  
Beiträge gesamt: 5826

17. Mai 2011, 21:38
Beitrag # 4 von 5
Beitrag ID: #471737
Bewertung:
(2631 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Anton,

um einer Liste ein Element anzuhängen, sollte nicht das &-Zeichen verwendet werden. Sonst wird bei jeder Ergänzung eine Kopie der aktuellen Liste gemacht. Und das kostet Zeit.

Besser ist: set end of listn to temp

Aber: Wenn nur die Namen der Dateien, welche sich im Ordner befinden, geholt werden sollen, dann ist list folder der bessere Befehl. Damit wird die Liste der Namen sofort erzeugt. Ohne Finder. Ohne Schleife. Das without invisibles sorgt dafür, dass unsichtbare Dateien (wie ".DS_Store") nicht berücksichtigt werden. Wichtig: Nach "Lager" ist ein Doppelpunkt eingefügt.

Code
set Abstellplatz to "Macintosh HD:Lager:" 
set FolderSelected to choose folder "Ordner wählen, bitte" as Unicode text
set listofFiles to list folder FolderSelected without invisibles
set huelse to last item of listofFiles

Aufgepasst: Mit last item wird das letzte Element der Liste zurückgegeben. Das bezieht sich auf die alphabetische Sortierung, aber nicht auf den Zeitpunkt der Erzeugung.

So geht es also nicht. Deshalb: Doch den Finder bemühen, um die Liste der Dateien aufzustellen. Danach muss der Finder diese Liste nach dem Modifikations-Datum sortieren. Und schliesslich kann man den Namen des ersten Elements des Ergebnisses verlangen:

Code
set Abstellplatz to "Macintosh HD:Lager:" 
set FolderSelected to choose folder "Ordner wählen, bitte" as Unicode text
tell application "Finder"
set listofFiles to every file of FolderSelected
set sortedList to sort listofFiles by modification date
set huelse to name of first item of sortedList
end tell

Von diesem Namen werden die ersten sechs Zeichen geholt. Aber nicht mit characters, sondern mit text. Das ist schneller, weil das Ergebnis schon Text ist (mit characters erhält man eine Liste, welche in Text umgewandelt werden muss). Dann wird der Pfad des neuen Ordners zusammengesetzt.

Code
set newName to (text 1 thru 6 of huelse) 
set newFolder to Abstellplatz & newName

Jetzt muss geprüft werden, ob der Ordner schon existiert. Dazu verwendet man einen try-Wickel (try = versuche). Und den Befehl alias, gefolgt vom gewünschten Pfad. Ist der Ordner noch nicht vorhanden, dann wird ein Fehler generiert und im Abschnitt on error kann versucht werden, den neuen Ordner zu erzeugen:

Code
try 
alias newFolder
on error
try
tell application "Finder" to make new folder at Abstellplatz with properties {name:newName}
end try
end try

Ist der Ordner schon vorhanden, dann wird ergibt alias newFolder keinen Fehler und es geschieht ... nichts.

Nochmals das Script an einem Stück:

Code
set Abstellplatz to "Macintosh HD:Lager:" 
set FolderSelected to choose folder "Ordner wählen, bitte" as Unicode text
tell application "Finder"
set listofFiles to every file of FolderSelected
set sortedList to sort listofFiles by modification date
set huelse to name of first item of sortedList
end tell

set newName to (text 1 thru 6 of huelse)
set newFolder to Abstellplatz & newName
try
alias newFolder
on error
try
tell application "Finder" to make new folder at Abstellplatz with properties {name:newName}
end try
end try

Alles klar? ;-)

Gruss, Hans


als Antwort auf: [#471526]

spezielle ordneraktion

Anton Kriegler
Beiträge gesamt:

19. Mai 2011, 08:22
Beitrag # 5 von 5
Beitrag ID: #471849
Bewertung:
(2591 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans

Herzlichen Dank. Rundum faszinierend!


Beste Grüße
Anton


als Antwort auf: [#471737]
X