[GastForen Programmierung/Entwicklung AppleScript Bestehenden Ordnernamen anhand eines Dateinamens aus einem Unterordner umbenennen.

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

Bestehenden Ordnernamen anhand eines Dateinamens aus einem Unterordner umbenennen.

osxuser
Beiträge gesamt: 16

23. Jul 2018, 14:01
Beitrag # 1 von 7
Bewertung:
(939 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebes Forum, ich möchte mit AppleScript mehrere Ordner nach folgenden Kriterien automatisch umbenennen lassen und hoffe, ihr könnt mir dabei helfen.

Es geht um Folgendes:

Es existieren mehrere Ordner, alle sind mit jeweils 8 Zahlen benannt (z.Bsp. 13002055, 13002056, 13002057 usw.).
In all diesen Ordnern sind entweder die beiden Unterordner "dokumente" und/oder "print_pdfs" enthalten, evtl. auch nur einer von beiden (teilweise betragen diese beiden Unterordner die Zeichen %0 am Schluss). Es kann jedoch vorkommen dass noch weitere Unterordner wie "bilder", "sources" usw. enthalten sind, diese werden von der Suche ausgeschlossen.
Gesucht soll in diesen Unterordnern nach einem Dateinamen beginnend mit einem "P" und 5 anschliessenden Zahlen, die restlichen Zeichen und die Dateinamenerweiterung werden nicht benötigt (z.Bsp. P12345_dokument.indd).
Beginnend soll der Unterordner "print_pdfs" durchsucht werden, ist in diesem keine Datei mit P-Nummer enthalten oder sollte dieser Unterordner sogar fehlen dann soll als nächstes der Unterordner "dokumente" durchsucht werden. Falls in diesen beiden Ordnern keine Datei gefunden wird oder sogar beide Unterordner fehlen sollten wird die Aktion abgebrochen.
Ziel des Scripts ist, dass die ersten 6 Zeichen des gefundenen Dateinamens (z.Bsp. P12345), kopiert werden und danach den obersten Ordner "12345678", mit dieser Zeichenfolge ersetzt. Nach diesem Vorgang soll der Ordner "12345678" also neu "P12345" heissen.

Auf Wunsch kann gerne eine Ordnerstruktur geschickt werden.

Danke für eure Hilfe!
osxuser
X

Bestehenden Ordnernamen anhand eines Dateinamens aus einem Unterordner umbenennen.

Hans Haesler
  
Beiträge gesamt: 5659

23. Jul 2018, 15:15
Beitrag # 2 von 7
Beitrag ID: #565026
Bewertung:
(927 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo osxuser,

eine happige Aufgabe ... Ich bin gerade unterwegs und kann erst abends versuchen, eine Lösung zu finden.

Vermutlich wird mir keiner zuvorkommen. ;-)

Gruss, Hans


als Antwort auf: [#565024]

Bestehenden Ordnernamen anhand eines Dateinamens aus einem Unterordner umbenennen.

Hans Haesler
  
Beiträge gesamt: 5659

25. Jul 2018, 09:00
Beitrag # 3 von 7
Beitrag ID: #565052
Bewertung:
(881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo osxuser,

ich konnte die Aufgabe erst heute Morgen anpacken. Hier die erste Version:

Code
(* 
OrdnerUmbenennen_01d.scpt
© 25.07.2018 / Hans Häsler, Châtelard 52, CH-1018 Lausanne
*)

# den Hauptordner wählen
activate me
set allFolders to choose folder with prompt "Die Ordner wählen" with multiple selections allowed
set nFolders to count allFolders

# eine Schleife durch die gewählten Ordner
repeat with n from 1 to nFolders
set curFolder to item n of allFolders

# eine Schleife durch die Unterordner
set newName to ""
repeat 1 times
tell application "Finder"
if exists folder "print_pdfs%0" of folder curFolder then
set docNames to name of every item of folder "print_pdfs%0" of folder curFolder
set newName to my checkNames(docNames)
if newName is not "" then exit repeat
end if
if exists folder "dokumente%0" of folder curFolder then
set docNames to name of every item of folder "dokumente%0" of folder curFolder
set newName to my checkNames(docNames)
if newName is not "" then exit repeat
end if
if exists folder "print_pdfs" of folder curFolder then
set docNames to name of every item of folder "print_pdfs" of folder curFolder
set newName to my checkNames(docNames)
if newName is not "" then exit repeat
end if
if exists folder "dokumente" of folder curFolder then
set docNames to name of every item of folder "dokumente" of folder curFolder
set newName to my checkNames(docNames)
if newName is not "" then exit repeat
end if
end tell
end repeat

if newName is not "" then
try
# den aktuellen Ordner umbenennen
tell application "Finder" to set properties of folder curFolder to {name:newName}
end try
end if
end repeat

# den Anwender informieren
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1


#///////////////////////////////////////////////////////////////////////////////////////
# der Handler, welcher versucht, den neuen Namen auszuziehen
on checkNames(docNames)
set newName to ""
set nNames to count docNames
repeat with n from 1 to nNames
set curName to item n of docNames
if curName starts with "P" then
try
set tmpNum to (text 2 thru 6 of curName) as integer
return "P" & tmpNum
end try
end if
end repeat
return newName
end checkNames

Ausführung: Das Script starten, einen (oder mehrere) Ordner wählen und auf "Wählen" klicken.

Gruss, Hans


als Antwort auf: [#565024]

Bestehenden Ordnernamen anhand eines Dateinamens aus einem Unterordner umbenennen.

osxuser
Beiträge gesamt: 16

25. Jul 2018, 11:35
Beitrag # 4 von 7
Beitrag ID: #565055
Bewertung:
(870 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Hans,

wau, funktioniert auf Anhieb, vielen Dank! Könnte mir vorstellen dass dieser Script auch für andere Zwecke verwendet werden könnte :–) Frage: ist es möglich den Script noch so anzupassen dass gleich mehrere Ordner in einem Rutsch umbenannt werden könnten (alle Ordner welche umbennant werden sollen liegen im gleichen Ordner)? Liebe Grüsse, osxuser


als Antwort auf: [#565052]

Bestehenden Ordnernamen anhand eines Dateinamens aus einem Unterordner umbenennen.

Hans Haesler
  
Beiträge gesamt: 5659

25. Jul 2018, 12:17
Beitrag # 5 von 7
Beitrag ID: #565058
Bewertung:
(866 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo osxuser,

bitte sehr.

Nun, das Script erlaubt eine Mehrfachauswahl (dank 'with multiple selections allowed').
Dazu ganz einfach den ersten Ordner auswählen, die Umschalttaste niederhalten, den letzten Ordner wählen: alle sind ausgewählt.

Oder die Befehlstaste benutzen, wenn gewisse Ordner nicht ausgewählt werden sollen.

Doch wenn Du vorziehst, dass nur ein Hauptordner ausgewählt werden muss, dann kann das Script entsprechend angepasst werden.

Das war übrigens der Ansatz der ersten Beta-Version. Ich werde den Code nach dem Mittagessen posten.

Gruss, Hans


als Antwort auf: [#565055]

Bestehenden Ordnernamen anhand eines Dateinamens aus einem Unterordner umbenennen.

osxuser
Beiträge gesamt: 16

25. Jul 2018, 13:06
Beitrag # 6 von 7
Beitrag ID: #565060
Bewertung:
(858 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Hans,

ok, mit der Umschalttaste funktionierts,somit ist mein Anliegen umgesetzt.

Super Sache, vielen Dank für deine Hilfe!

Liebe Grüsse,
osxuser


als Antwort auf: [#565058]

Bestehenden Ordnernamen anhand eines Dateinamens aus einem Unterordner umbenennen.

Hans Haesler
  
Beiträge gesamt: 5659

25. Jul 2018, 13:38
Beitrag # 7 von 7
Beitrag ID: #565061
Bewertung:
(854 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo osxuser,

okay, gut, dass es nun klappt. Dennoch nachstehend der angekündigte Code, mit welchem ein Hauptordner ausgewählt wird, welcher die Ordner 13002055, 13002056, 13002057 usw. enthält.

Code
(* 
OrdnerUmbenennen_02d.scpt
© 25.07.2018 / Hans Häsler, Châtelard 52, CH-1018 Lausanne
*)

# den Hauptordner wählen
set mainFolder to choose folder with prompt "Den Hauptordner wählen"

# die Unterordner ermitteln
tell application "Finder" to set allFolders to every folder of folder mainFolder
set nFolders to count allFolders

# eine Schleife durch die Unterordner
repeat with n from 1 to nFolders
set curFolder to (item n of allFolders) as string
set newName to ""

# eine Schleife durch die Unterordner des aktuellen Unterordners
repeat 1 times
tell application "Finder"
if exists folder "print_pdfs%0" of folder curFolder then
set docNames to name of every item of folder "print_pdfs%0" of folder curFolder
set newName to my checkNames(docNames)
if newName is not "" then exit repeat
end if
if exists folder "dokumente%0" of folder curFolder then
set docNames to name of every item of folder "dokumente%0" of folder curFolder
set newName to my checkNames(docNames)
if newName is not "" then exit repeat
end if
if exists folder "print_pdfs" of folder curFolder then
set docNames to name of every item of folder "print_pdfs" of folder curFolder
set newName to my checkNames(docNames)
if newName is not "" then exit repeat
end if
if exists folder "dokumente" of folder curFolder then
set docNames to name of every item of folder "dokumente" of folder curFolder
set newName to my checkNames(docNames)
if newName is not "" then exit repeat
end if
end tell
end repeat

if newName is not "" then
try
tell application "Finder" to set properties of folder curFolder to {name:newName}
end try
end if
end repeat

# den Anwender informieren
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1


#///////////////////////////////////////////////////////////////////////////////////////
# der Handler, welcher versucht, den neuen Namen auszuziehen
on checkNames(docNames)
set newName to ""
set nNames to count docNames
repeat with n from 1 to nNames
set curName to item n of docNames
if curName starts with "P" then
try
set tmpNum to (text 2 thru 6 of curName) as integer
return "P" & tmpNum
end try
end if
end repeat
return newName
end checkNames

Man könnte den Code mit Droplet-Befehlen ausstatten. Und/oder so erweitern, dass das Script automatisch entscheiden kann, ob der ausgewählte Ordner ein Hauptordner ist, oder ein Zielordner mit gegebenem Namen, z.B. "13002055".

Gruss, Hans


als Antwort auf: [#565060]
X

Home

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
16.11.2018

München
Freitag, 16. Nov. 2018, 09.30 - 17.00 Uhr

Workshop

Hochwertig umsetzen, sicher beurteilen: Im Fokus dieses Vertiefungs-Workshops steht Ihre eigene Design-Leistung. Der Praxis-Workshop bietet Profis wertvolle Tipps zu Detail- und Lesetypografie im Kommunikationsdesign. Vom Arbeiten mit halben Leerzeilen im Grundlinienraster über lückenlosen Blocksatz bis zur stilistisch richtigen Schriftmischung: Sie kennen das Handwerk, dieser Workshop macht Sie zum Meister.

Ein-Tages-Workshop von 9:30 bis 17 Uhr
Während des Workshops stehen jedem Teilnehmer ein iMac + Adobe CC zur Verfügung.
Max. 8 Teilnehmer
Normalpreis: € 281,51 netto (€ 335,– brutto)
Ermäßigung: € 239,50 netto (€ 285,– brutto),

Ja

Organisator: TypeSCHOOL

Kontaktinformation: Uwe Steinacker, E-Mailsteinacker AT typeschool DOT de

www.typeschool.de

Detail-Typografie und Layout im Kommunikationsdesign zur Vertiefung
Veranstaltungen
22.11.2018

In dieser Veranstaltung kombinieren wir Emotion und Ratio, Gestaltung und Rechtschreibung.

Hochschule der Medien, Stuttgart
Donnerstag, 22. Nov. 2018, 18.00 - 20.00 Uhr

Vortrag

Sven Tillack und Steffen Knöll vom mehrfach ausgezeichneten "Studio Tillack Knoell", Stuttgart, (studiotillackknoell.com) geben einen Einblick in die Arbeit in der visuellen Kommunikation. Ihr Arbeitsfeld ist digitales und analoges, von visuellen Erscheinungsbildern bis hin zu kommunizierender Grafik im Raum. Besondere Erfahrungen hat Sven bei der Arbeit mit Risographie gemacht, Steffen setzt sich seit längerem mit Grafik im Raum auseinander. Auch über diese Projekte werden sie berichten. Lasst euch von ihnen, ihrem Vortrag und ihrer Arbeit inspirieren. Etienne Roth ist Computerlinguist. Er hat die Duden-Korrekturlösungen bereits als Projektleiter und Produktmanager beim Dudenverlag mitentwickelt. Bei EPC betreut er das Lexikon und die Grammatik(fehler)analyse der Korrekturengine. Außerdem ist er Produktmanager für die Duden-Integration in Adobe InDesign. Bei EPC werden die professionellen Duden-Korrekturlösungen weiterentwickelt, vertrieben und gewartet. Dazu gehören Rechtschreib- und Grammatikkorrektur, Stilprüfung und Thesaurus sowie Werkzeuge zur Wörterbuchpflege, lokal und in Netzwerkumgebungen. Die Duden-Rechtschreibprüfung und Silbentrennung sind seit Version 13 (CC 2018) ein integraler Teil von Adobe InDesign. Viele Kunden vermissen aber die bewährte Grammatikprüfung. Der Duden Korrektor CC bringt die beste Grammatikprüfung für die deutsche Sprache zurück nach InDesign und InCopy. Er enthält außerdem die Stilprüfung und den Thesaurus von Duden. Verlosung: Wir verlosen wieder Software, Bücher und Fachzeitschriften im Wert von über 1000 Euro. Neben dem bekannten "CC-Abo für ein Jahr" nun auch ein "Foto-Abo für ein Jahr mit 1 TB Speicher" und brandneu "10 Bilder pro Monat von Adobe Stock für ein Jahr". Die Firma EPC verlost eine Lizenz "Duden Korrektor CC"! Mach Werbung und bring gerne Freunde und Kollegen mit! Wir freuen uns auf Dich. Katharina Frerichs und Christoph Steffens

Nein

Organisator: IDUG Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailchristoph.steffens AT gmail DOT com

idugs51.eventbrite.com

Hier Klicken