[GastForen Programmierung/Entwicklung AppleScript

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Dateien kopieren

Hans Haesler
  
Beiträge gesamt: 5826

26. Mai 2020, 22:54
Bewertung:

gelesen: 27876

Beitrag als Lesezeichen
Hallo Thilo,

eine neue Version mit ein paar Änderungen:

1. Anstelle von "26.05.2020" wird der Name eines Ordners so zusammengesetzt: "2020_05_26".
Das "Umdrehen" ist notwendig, weil der zu entfernende Ordner nicht durch den Namen, welcher dem Datum "vor 30 Tagen" entspricht, bezeichnet wird.
Wegen folgender Überlegung: Wenn mit der bisherigen Lösung an einem Tag kein Backup erzeugt wird, dann würde am nächsten Tag der zweitälteste Ordner entfernt werden.
Die Punkte sind durch Underscores ersetzt, weil sonst der letzte Zahlenwert als Suffix behandelt wird.

2. Das 30 Tage zurückliegende Datum wird nicht mehr errechnet. Aus demselben Grund: Wenn ein Backup ausfiel, würde ein falscher Ordner entfernt werden.
Nun ist der zu entfernende Ordner ganz einfach der erste im Backup-Ordner, sobald dieser mehr als 30 Ordner enthält.

3. Wenn das Script diesen ersten Ordner direkt entfernen würde, könnte es sein, dass es nicht der erste ist. Was soll das?!? Mit "Mojave" wurde die verlangte Liste der Ordner nicht mehr in alphabetischer Ordnung zurückgegeben. Ob es mit "Catalina" immer noch so ist, kann ich nicht prüfen. Werden wir nachholen.
Zuerst wird der Finder gebeten, die Namen der Ordner aufzulisten. Sicherheitshalber wird diese Liste an einen Handler geschickt, welcher sie sortiert zurückgibt. Dann ist das erste Element der Liste der Name des zu löschenden Ordners.

4. Analog Deinem Wunsch in unserem privaten Austausch werden die Ordner "Dokumente" und "Musik" kopiert. Deshalb werden deren Pfade in eine Liste gesetzt.

Das nachfolgende Script habe ich im Format "Programm" gesichert und es unten angehängt. Somit muss es nicht ab "Script Editor" gestartet werden. Es genügt ein Doppelklick auf das Icon des Scripts.

Code
(* 
BackupScript_03.scpt
© 26.05.2020 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
*)

# das aktuelle Datum
set curDate to current date
set dd to day of curDate
set mm to text -2 thru -1 of ("0" & (month of curDate as number))
set yyyy to year of curDate
set actString to "" & yyyy & "_" & mm & "_" & dd

# die Liste der zu kopierenden Ordner
set folderList to {"Macintosh HD:Users:tbo:Documents", "Macintosh HD:Users:tbo:Music"}

# der Pfad zum Backup-Ordner
set backupFolder to "Sich_3:Backup"

# den aktuellen Ordner erzeugen
tell application "Finder"
try
set targetFolder to (make new folder at folder backupFolder with properties {name:actString}) as string
on error
set targetFolder to (backupFolder & actString) as string
end try
end tell

# die Ordner kopieren
tell application "Finder" to duplicate folderList to folder targetFolder with replacing

# die Namer der Ordner auflisten, welche sich in "Backup" befinden ...
tell application "Finder"
set backList to name of every folder of folder backupFolder
end tell
# ... und zählen
set nItems to count backList

# wenn mehr als 30 Ordner
if nItems is greater than 30 then
# die Liste zum Sortier-Handler schicken
set namesList to quickSort(backList, 1, nItems)
# den ersten Ordner in "Backup" entfernen
try
tell application "Finder" to delete folder (item 1 of namesList) of folder backupFolder
end try
end if

# den Anwender informieren
activate me
display dialog "Fertig." buttons "OK" default button 1 with icon 1

#######################################################
# der Handler, welcher die Namen sortiert
on quickSort(a, L, R)
script
property namesList : a
end script
tell result
set ctr to L
set n to R
set aRef to item L of its namesList
repeat while ctr < n
repeat while (aRef < item n of its namesList) and (ctr < n)
set n to n - 1
end repeat
if n is not ctr then
set item ctr of its namesList to item n of its namesList
set ctr to ctr + 1
end if
repeat while (aRef > item ctr of its namesList) and (ctr < n)
set ctr to ctr + 1
end repeat
if n is not ctr then
set item n of its namesList to item ctr of its namesList
set n to n - 1
end if
end repeat
set item n of its namesList to aRef
if L < n then
quickSort(its namesList, L, n - 1)
end if
if R > ctr then
quickSort(its namesList, ctr + 1, R)
return its namesList
end if
end tell
end quickSort

Gruss, Hans

(Dieser Beitrag wurde von Hans Haesler am 27. Mai 2020, 11:56 geändert)

Anhang:
BackupScript_03.zip (8.06 KB)
Änderungsverlauf:
Beitrag geändert von Hans Haesler (Veteran) am 27. Mai 2020, 11:56

Aktuell

Web / SEO / Blockchain / Betriebssystem
300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!