[GastForen Programmierung/Entwicklung AppleScript bestimmte Pfade löschen - Photoshop CS6

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

bestimmte Pfade löschen - Photoshop CS6

freya_sweden
Beiträge gesamt: 5

25. Mär 2014, 14:06
Beitrag # 1 von 8
Bewertung:
(3387 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen.

Ich suche nach einem Script um bei TIFF-Bildern alle Pfade zu löschen ausser einem bestimmten. Dieser Pfad heisst immer "Product" ist KEIN Beschneidungspfad (die anderen Pfade auch nicht). Ich brauche am Ende ein TIFF mit einem Pfad Namens Product, der nicht aktiviert (angewählt) sein darf.
Da diese Anforderungen sehr spezifisch sind und mein Applescript-Talente noch in den Kinderschuhen stecken, würde ich mich über eure Hilfe sehr freuen :)

Liebe Grüsse aus Schweden
Freya
X

bestimmte Pfade löschen - Photoshop CS6

Hans Haesler
  
Beiträge gesamt: 5796

25. Mär 2014, 15:46
Beitrag # 2 von 8
Beitrag ID: #525421
Bewertung:
(3350 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Freya,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

Dein Anliegen sollte zu lösen sein. Aber es wäre gut, wenn Du mir eine typische Datei senden könnest.
Zudem sollte ich noch wissen, welche Version von Mac OS X Du benutzest.

Gruss, Hans


als Antwort auf: [#525404]

bestimmte Pfade löschen - Photoshop CS6

freya_sweden
Beiträge gesamt: 5

25. Mär 2014, 16:52
Beitrag # 3 von 8
Beitrag ID: #525430
Bewertung:
(3323 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich nutze Mac OSX 10.8.5

Datei habe ich dir zugesendet. Danke schonmal im Vorraus, das ist echt nett :)

/Freya


als Antwort auf: [#525421]

bestimmte Pfade löschen - Photoshop CS6

Hans Haesler
  
Beiträge gesamt: 5796

25. Mär 2014, 18:11
Beitrag # 4 von 8
Beitrag ID: #525438
Bewertung:
(3292 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Freya,

und hier ist eine erste Version des Scripts. Ich habe Dir das gebrauchsfertige Droplet per PM übermittelt.

Es war ziemlich rasch erstellt, denn es genügte, das Script eines kürzlichen Themas anzupassen ("Bilder sortieren lassen" http://www.hilfdirselbst.ch/...i?post=525162#525162)

Auch hier: Wer es interessehalber ausprobieren will, den folgenden Code auswählen, kopieren und in ein neues Fenster des AppleScript-Editors einsetzen.
Dann > Ablage > Sichern: Einen Namen tippen und als Dateiformat "Programm" wählen. Bei den Optionen keine der beiden Checkboxen aktivieren.

Code
(*  
PfadeEntfernen_601d.app
Bild-Dateien öffnen und Pfade entfernen (ausser "Product")
© 25.03.14 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
*)

-- einen Dialog zeigen, falls der Anwender einen Doppelklick auf das Droplet macht
on run
display dialog "Den Quellordner auf das Icon
dieses Droplets ziehen." buttons "OK" default button 1 with icon 0
end run

-- der 'open handler', welcher auf das Fallenlassen von Objekten reagiert
on open allObjects
-- das Trennzeichen zurücksetzen
set AppleScript's text item delimiters to {""}
-- der Pfad des gedroppten Ordners
set objPath to (item 1 of allObjects as Unicode text)
-- den gedroppten Ordner zum Handler 'processFolder' schicken
processObject(objPath)
-- den Anwender über das Ergbenis der Aktion informieren
activate me
display dialog "Fertig." buttons "OK" default button 1 with icon 2 giving up after 1
end open

-- im folgenden Handler wird festgestellt, ob das Objekt ein Ordner oder eine Datei ist.
-- Bei Ordnern wird eine Liste des Inhalts erstellt und die Elemente rekursiv behandelt
-- (d.h. zum aktuellen Handler geschickt)
-- Dateien werden zum Handler 'processFile' gesandt
on processObject(aObject)
-- wenn der Pfad mit einem Doppelpunkt endet, ist das Objekt ein Ordner
if (aObject as string) ends with ":" then
-- die Liste des Inhalts wird erstellt (ohne unsichtbare Dateien)
set contentsList to list folder aObject without invisibles

-- dies ist das rekursive Teil: die Wiederholschleife schickt alle Objekte zum Handler,
-- in welchem sie sich selbst befindet
repeat with anItem in contentsList
set objPath to ((aObject as Unicode text) & anItem)
processObject(objPath as alias)
end repeat

-- wenn das Objekt eine TIFF-Datei ist, den Pfad an 'processFile' übergeben
else if (aObject as string) ends with ".tif" then
processFile(aObject as Unicode text)
end if
end processObject

-- die aktuelle Datei öffnen und die Pfade entfernen
on processFile(aFile)
tell application "Adobe Photoshop CS6"
activate
try
open alias aFile showing dialogs never
-- die Namen der Pfade auflisten
try
tell current document
-- die Namen der Pfade auflisten
set pathNames to name of every path item
-- eine Rückwärts-Schleife durch die Namen
repeat with n from (count of pathNames) to 1 by -1
-- wenn der aktuelle Name nicht "Product" ist dann ...
if item n of pathNames is not "Product" then
-- wird er entfernt
delete path item n
end if
end repeat
end tell
-- das Dokument sichern ...
save document 1
end try
-- … und schliessen
close current document saving no
end try
end tell
end processFile

Bitte vorher mindestens ein Backup der Dateien machen. Denn die Pfade (ausser "Product") werden weggeräumt.

Gruss, Hans


als Antwort auf: [#525430]

bestimmte Pfade löschen - Photoshop CS6

TMA
Beiträge gesamt: 369

27. Mär 2014, 07:49
Beitrag # 5 von 8
Beitrag ID: #525501
Bewertung:
(3219 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
die Pfade können auch in einem Rutsch gelöscht werden, die Schleife kann dann weg.
Code
delete (every path item whose name is not "Product") 


Gruß
TMA


als Antwort auf: [#525438]

bestimmte Pfade löschen - Photoshop CS6

Hans Haesler
  
Beiträge gesamt: 5796

27. Mär 2014, 08:44
Beitrag # 6 von 8
Beitrag ID: #525503
Bewertung:
(3209 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA,

ja, Du hast Recht. Aber: Ergibt das einen Geschwindigkeits-Vorteil?

Ausprobieren:
– Die Beispiel-Datei von Freya duplizieren bis der Quellordner 100 Dateien enthält.
– Von diesem Quellordner ein Backup erzeugen.
– Eine Kopie des Original-Droplets mit einfachen Time-Stamp-Befehlen ausrüsten.
– Dieses Droplet kopieren und die Schleife durch den 'every'-Befehl ersetzen.

Abwechslungsweise die beiden Droplets benutzt. In jeder Datei sind vier Pfade zu entfernen.

Ergebnis:
33 Sekunden: mit Schleife
34 Sekunden: ohne Schleife
33 Sekunden: mit Schleife
32 Sekunden: ohne Schleife

Fazit:
Der erwartete Geschwindigkeits-Schub blieb aus.

Erklärungsversuch:
Ohne Schleife entfällt zwar das vorgängige, explizite Auflisten der Namen.
Doch mit 'every' wird intern gleichwohl eine gefilterte Liste der Namen erzeugt.
Die Pfade werden auch ohne Schleife nicht auf einen Schlag entfernt.

Gruss, Hans


als Antwort auf: [#525501]

bestimmte Pfade löschen - Photoshop CS6

TMA
Beiträge gesamt: 369

28. Mär 2014, 07:30
Beitrag # 7 von 8
Beitrag ID: #525590
Bewertung:
(3168 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
nicht falsch verstehen. Mir ging es hier nicht um einen Geschwindigkeitsvorteil, noch um die Entfernung der Pfade in einem Rutsch.

Ich habe nur gezeigt das es auch mit einem Einzeiler geht.

Intern wird bei 'every' eine Schleife erzeugt, das ist richtig. Das sieht man sogar wenn beim Löschen der Pfade Photoshop im Vordergrund ist und sich die Pfade-Palette ansieht.

Gruß
TMA


als Antwort auf: [#525503]

bestimmte Pfade löschen - Photoshop CS6

freya_sweden
Beiträge gesamt: 5

28. Mär 2014, 13:46
Beitrag # 8 von 8
Beitrag ID: #525615
Bewertung:
(3140 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich danke dir Hans für deine unglaublich schnelle Hilfe. Das Script funktioniert einwandfrei. Ich freu mich jedesmal wie Hupe, wenn ich es nutze :)

Liebe Grüsse aus Schweden.
Freya


als Antwort auf: [#525438]
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
21.01.2021 - 22.01.2021

Digicomp Academy AG, Bern oder Basel
Donnerstag, 21. Jan. 2021, 08.30 Uhr - Freitag, 22. Jan. 2021, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM1

Veranstaltungen
25.01.2021 - 26.01.2021

Digicomp Academy AG, Bern oder Zürich
Montag, 25. Jan. 2021, 08.30 Uhr - Dienstag, 26. Jan. 2021, 17.00 Uhr

Kurs

In diesem Basic-Kurs lernen Sie das Wichtigste über den Aufbau und die Funktionsweise von Photoshop. Zusammen mit den notwendigen Grundlagen von Farbenlehre bis Bildauflösung lernen Sie zudem die kreativen Möglichkeiten von Photoshop kennen.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/PHOTM1

Neuste Foreneinträge


Langsamer MacMini

Tabellenspalte als „auf der Seite aussen liegend“ definieren

Balken hinter einen Bildteil

Nicht "Silben über Spalten hinweg trennen" (CC 2018/ CC 2021)

PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

InDesign CS6 (8.1.0)-Patch

komische DOC – seltsames Verhalten beim Import in InDesign

Statische Fußnoten-Ziffern

Laser Drucker druckt schwarze Flecken Links und Rechts von Blatt

Covid und das Wohlbefinden
medienjobs