[GastForen Programmierung/Entwicklung AppleScript via applescript aktuelle zeit+datum in den dateinamen fügen

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

via applescript aktuelle zeit+datum in den dateinamen fügen

Gast
Beiträge gesamt:

19. Aug 2004, 13:34
Beitrag # 1 von 3
Bewertung:
(6727 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!
wie füge ich via apple script die aktuelle zeit und das datum in einen dateinamen?
ich nehme radiosendungen via skript (sound studio + alarm clock pro) auf und wünsche, daß dann im dateinamen das erstellungsdatum integriert wäre als unverwechselbaren stempel um fehlermeldungen wegen doppelter dateinamen zu vermeiden...
könnte mir jemand mit einer problemlösung dienen?
vielen dank, frank.
X

via applescript aktuelle zeit+datum in den dateinamen fügen

Hans Haesler
  
Beiträge gesamt: 5818

19. Aug 2004, 13:52
Beitrag # 2 von 3
Beitrag ID: #418965
Bewertung:
(6722 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Frank,

wie sieht ein typischer Dateiname aus? Und wie sollen Datum und Zeit formatiert sein?
Wenn Du mir ein Beispiel gibst, wie Du Dir den Namen vorstellst, dann werde ich Dir
die Formel dafür mitteilen.

Welche Mac-OS-Version benutzt Du?

Hans Haesler <[email protected]>


als Antwort auf: [#418964]

via applescript aktuelle zeit+datum in den dateinamen fügen

Hans Haesler
  
Beiträge gesamt: 5818

20. Aug 2004, 10:09
Beitrag # 3 von 3
Beitrag ID: #418966
Bewertung:
(6722 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier schon mal etwas Theorie zum Thema "Datum und Zeit".

Das aktuelle Datum samt Zeit in eine Variable zu bekommen ist einfach:
Code
set curDate to (current date) 

Das Ergebnis -->date "Freitag, 20. August 2004 7:37:30 Uhr" ist keine Textkette (string), sondern im Format 'date'. Wenn man das Datum, so wie es ist, irgendwo einsetzen will, dann kann man dem Befehl den Zusatz 'as string' anhängen und hat dann eine Textkette: "Freitag, 20. August 2004 7:37:30 Uhr".

Wenn aber das Resultat verändert (Name des Wochentages weglassen, Kurzform = 20.08.04) oder/und wenn die Uhrzeit in einen Dateinamen aufgenommen werden soll, dann ist es einfacher, die Infos aus dem 'date' auszuziehen.

Angenommen, dieses Beispieldatum soll ins Format "_040820_073730" umgewandelt werden (Jahr, Monat, Tag, damit es mit dem Sortieren klappt).

Die einzelnen Bestandteile werden aus der Variablen 'curDate' ausgezogen:
Code
set yy to year of curDate -->2004 

Damit nur die zwei letzten Stellen in die Variable 'yy' gegeben werden, verlangt man den 'text -2' (= zweitletzter Buchstabe) bis '-1' (= letzter Buchstabe) des Jahres von 'curDate'. Weil das Jahr im Format 'integer' (= Ganzzahl) ist, muss es für diese Operation in einen 'string' (= Textkette) umgewandelt werden. Man kann wieder 'as string' einsetzen. Oder die kürzere Form anwenden, mit welcher 'year of current date' mit dem Zeichen '&' an einen leeren String gehängt und so automatisch ins selbe Format konvertiert wird:
Code
set yy to text -2 thru -1 of ("" & (year of curDate)) -->04 

Der Monat ist eine besondere Knacknuss.
Code
set mm to month of curDate -->August 

Das Resultat ist keine Textkette (die Anführungszeichen fehlen), sondern eine englische Konstante (April, August, September  und November sind die Namen, welche in deutsch und englisch übereinstimmen). Um die Nummer des Monats herauszukriegen, könnte man einen Test aufstellen:
---
if mm = January then
  set mm to "01"
else if mm = February then
  set mm to "02"
else if mm = March then
  set mm to "03"
usw. usf.
Code
Es gibt aber eine kürzere Formel, welche nicht so einfach zu verstehen ist: 

copy curDate to tempDate
set month of tempDate to January
set mm to text -2 thru -1 of ("0" & ((curDate - tempDate) div 2500000) + 1) -->"08"
---
Zuerst wird 'curDate' in eine zweite Variable kopiert. Hier ist das 'copy' zwingend. Weil nach einem 'set' mit dem Befehl der zweiten Zeile auch der Inhalt von 'curDate' verändert würde. Den Beginn der dritten Zeile haben wir schon beim Jahr kennengelernt. Hier wird aber das Resultat nicht an einen leeren String angehängt, sondern an "0". Damit wird bei einstelligen Werten eine Null eingefügt. Das Resultat aus '(curDate - tempDate)' ist die Anzahl Sekunden zwischen dem heutigen Tag und dem gleichen des Monats Januar. Dieses Ergebnis wird mit 'div' durch 2500000 geteilt (man kann eine beliebige Zahl zwischen 2419200 und 2505600 verwenden). Man erhält eine Ganzzahl, welche um 1 kleiner ist, als die richtige Lösung. Deshalb muss am Schluss '+ 1' stehen.

Unter Mac OS X ist dies alles viel einfacher, denn die Nummer kann direkt verlangt werden.
Code
set mm to text -2 thru -1 of ("0" & (month of curDate as number)) -->"08" 

Das Ausziehen des Tages ist leicht:
Code
set dd to text -2 thru -1 of ("0" & (day of curDate)) -->"20" 

Hier wird die vorangestellte Null nicht gebraucht. Aber mit Werten unter 10 wird sie eingefügt.

Die Uhrzeit kann mit 'time string of curDate' ausgezogen werden.
Code
set ts to time string of curDate -->"7:37:30 Uhr" 

Drei Probleme:
1) Bei Werten von 0 bis 9 muss eine führende Null eingefügt werden.
2) Die Doppelpunkte dürfen nicht in einem Dateinamen verwendet werden.
3) Der (läppische) Zusatz " Uhr" muss weg.
---
set c to offset of ":" in ts
set h to text -2 thru -1 of ("0" & (text 1 thru (c - 1) of ts))
set m to text (c + 1) thru (c + 2) of ts
set s to text (c + 4) thru (c + 5) of ts
---
Zuerst wird in die Variable 'c' die Position des ersten ':' gesetzt. Dann wird dieser Wert benutzt, um den Variablen 'h', 'm' und 's' die entsprechenden Werte zuzuweisen.

Hier das ganze Mac-OS-9-Script auf einen Blick:
---
set curDate to (current date)

copy curDate to tempDate
set month of tempDate to January

set yy to text -2 thru -1 of ("" & (year of curDate))
set mm to text -2 thru -1 of ("0" & ((curDate - tempDate) div 2500000) + 1)
set dd to text -2 thru -1 of ("0" & (day of curDate))
set ts to time string of curDate
set c to offset of ":" in ts
set h to text -2 thru -1 of ("0" & (text 1 thru (c - 1) of ts))
set m to text (c + 1) thru (c + 2) of ts
set s to text (c + 4) thru (c + 5) of ts
set finalDate to ("_" & yy & mm & dd & "_" & h & m & s) -->"_040820_073730"
---

Das Ergebnis zählt immerhin 14 Zeichen. Dies ist eventuell zu viel, um an einen Dateinamen angefügt zu werden. Eine Variante wäre, die Sekunden, welche ab einem fixen Datum bis jetzt verstrichen sind, zu benutzen.
---
set fixDate to date "Donnerstag, 1. Januar 2004 0:00:00 Uhr"
set curDate to current date
set nSecs to "_" & (curDate - fixDate) -->"_20072250"
---
Nur noch neun Zeichen. Und ebenfalls ein unverwechselbarer Stempel. Nun &#133; so in drei Jahren müsste man sich die Sache nochmals vornehmen...

Hans Haesler <[email protected]>


als Antwort auf: [#418964]

Aktuell

InDesign / Illustrator

| 23.05.2022

IDUG_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
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/