[GastForen Programmierung/Entwicklung AppleScript Variablen Teil aus einem Dateinamen löschen

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

Variablen Teil aus einem Dateinamen löschen

schallwelt
Beiträge gesamt: 12

24. Jan 2012, 18:41
Beitrag # 1 von 5
Bewertung:
(7849 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe die Aufgabe aus einem Dateinamen immer eine Variable an Ziffern zu löschen:

DE69C11001_OSE_TD_Drahtkorb_1280x850.pdf
soll werden zu
DE69C11001_OSE_TD_Drahtkorb


DE69C11001_OSE_TD_Infoklapper_800x50.pdf
soll werden zu
DE69C11001_OSE_TD_Infoklapper.pdf


Das Problem ist, dass ich nicht einfach z.B. sagen kann:
(text -10 thru -1 of myItemName)
da ja immer verschiedene Größen vorkommen können.


Kann ich irgendwie von hinten den letzen "_" ansprechen
und alles ab da, bis auf die Dateiendung löschen?


Hoffe, dass irgendjemand verstanden hat, was ich meine :-)
Gruß Daniel
X

Variablen Teil aus einem Dateinamen löschen

Hans Haesler
  
Beiträge gesamt: 5818

24. Jan 2012, 19:48
Beitrag # 2 von 5
Beitrag ID: #488484
Bewertung:
(7831 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Daniel,

es gibt mehr als eine Lösung. Man könnte auch die Satimage.osax einsetzen.
Versuchen wir es aber mit reinem AppleScript.

Code
set fileName to "DE69C11001_OSE_TD_Drahtkorb_1280x850.pdf" 

set nameList to every item of fileName
set lastPos to offset of "_" in ((reverse of nameList) as string)
set newName to text 1 thru -(lastPos + 1) of fileName & text -4 thru -1 of fileName

Die Zeichen des Namens werden als einzelne Elemente in eine Liste gegeben.
Die dritte Zeile muss man rückwärts lesen: Die Reihenfolge der Liste wird mit reverse umgekehrt und in eine Textkette verwandelt. Und mit offset of wird die Position des ersten (= letzten) Underscore-Zeichens festgestellt.

In der letzten Zeile wird der neue Name zusammengesetzt:
text 1 = Text vom ersten Zeichen
thru = bis
-(lastPos + 1) = ist schwierig zu verstehen.
In diesem Beispiel hat lastPos den Wert 13. Plus 1 = 14. Und das Minuszeichen vor der Klammer bedeutet: das vierzehnte Zeichen von hinten gezählt.

Eine andere Lösung beruht auf den AppleScript's text item delimiters.

Code
set fileName to "DE69C11001_OSE_TD_Drahtkorb_1280x850.pdf" 

set AppleScript's text item delimiters to "_"
set tmpName to (text items 1 thru -2 of fileName) as string
set AppleScript's text item delimiters to {""}
set newName to tmpName & text -4 thru -1 of fileName

Der Underscore wird als Trenner bestimmt. Das Ergebnis von text items of fileName ist
{"DE69C11001", "OSE", "TD", "Drahtkorb", "1280x850.pdf"}
Davon nimmt man jene vom ersten bis zum zweitletzten und setzt sie in die Variable tmpString als Textkette.
Den neuen Namen zusammensetzen: An tmpName die Zeichen vom viertletzten bis zum letzten des Originalnamens anfügen.

Gruss, Hans


als Antwort auf: [#488475]

Variablen Teil aus einem Dateinamen löschen

TMA
Beiträge gesamt: 384

25. Jan 2012, 10:57
Beitrag # 3 von 5
Beitrag ID: #488518
Bewertung:
(7804 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
kennt man sich ein wenig mit regulären Ausdrücken aus und man hat die Satimage.osax (hat Hans schon erwähnt) installiert, geht es dann so:

Code
set fileName to "DE69C11001_OSE_TD_Drahtkorb_1280x850.pdf" 

set newName to change "^(.*)_[^_]*(\\.pdf)$" in fileName into "\\1\\2" with regexp


Gruß
TMA


als Antwort auf: [#488484]

Variablen Teil aus einem Dateinamen löschen

schallwelt
Beiträge gesamt: 12

25. Jan 2012, 12:57
Beitrag # 4 von 5
Beitrag ID: #488530
Bewertung:
(7781 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen vielen Dank! Ich habe es mit deinem Hinweise hinbekommen.

Habe aber das ganze noch etwas abgewandelt, sodass es mit
jedem beliebigen Namen von INDD-Dokumenten passt:

Code
 
set myName to name of active document
if (text -5 thru -1 of myName) is ".indd" then
set myName to text 1 thru -6 of myName
end if

set fileName to myName

set nameList to every item of fileName
set lastPos to offset of "_" in ((reverse of nameList) as string)
set myOrdnerName to text 1 thru -(lastPos + 1) of fileName


So wird aus dem Dateinamen:

DE69C11001_OSE_TD_Drahtkorb_1280x850.indd

ein Ordner

DE69C11001_OSE_TD_Drahtkorb

in dem ich dann alles automatisch verpacken kann.


Vielen Dank!
Gruß Daniel


als Antwort auf: [#488484]

Variablen Teil aus einem Dateinamen löschen

Hans Haesler
  
Beiträge gesamt: 5818

25. Jan 2012, 13:08
Beitrag # 5 von 5
Beitrag ID: #488532
Bewertung:
(7771 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Daniel,

bitteschön.

Ach so... da ist auch noch ein Ordnername im Spiel. Ich dachte mir, dass Du im ersten Beispiel die Endung nicht getippt hattest.

Gut, dass Du meine etwas knappen Erklärungen begriffen hast. :-)

Gruss, Hans


als Antwort auf: [#488530]
X

Aktuell

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/