hilfdirselbst.ch
Facebook Twitter gamper-media
Mac OS X enthält verschiedene integrierte Werkzeuge und Technologien, mit denen sich gängige Aufgaben schnell und einfach automatisieren lassen.

Forenindex » Programmierung/Entwicklung » AppleScript » Photoshop Pfade Kopieren

 

« « 1 2 3 » »  


HFPatzi
Beiträge: 27

22. Feb 2012, 08:44

Beitrag #16 von 31
Beitrag ID: #490459

Bewertung:

(600 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Antwort auf [ Hans Haesler ] ...Gar nicht so einfach, die Datei-Paare ausfindig zu machen.


Wie recht du doch hast :-)

Habe einiges ausprobiert, aber nichts hat zum Erfolg geführt. Zumindest kann ich das Quell- und Zieldokument markieren und via automator dann in Photoshop öffnen und das Skript ausführen.

Ich habe mir gedacht, dass das ganze eventuel via shellscript zu lösen ist. Davon habe ich aber null Ahnung ;-)

Mal sehen was Google so ausspuckt.

Gruß
Patzi

als Antwort auf: [#490169] Top

-hans-
Beiträge: 391

22. Feb 2012, 09:22

Beitrag #17 von 31
Beitrag ID: #490461

Bewertung:

(590 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


hi,

wie hat man sich den aufbau denn vorzustellen?
Liegen alle Dateien (jpg + tif) plain in dem Ordner?
Müssen die tif vllt. woanders abgegriffen werden?

Shell muss es nicht wirklich sein, da die Bremse eh PS sein dürfte ;-)

Tschöle

Hans
Lieben Gruß

Hans-Gerd Claßen

als Antwort auf: [#490459] Top

HFPatzi
Beiträge: 27

22. Feb 2012, 09:30

Beitrag #18 von 31
Beitrag ID: #490462

Bewertung:

(587 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Die jpg's und tif's liegen alle im selben Ordner, von daher wäre ja ein Droplet, bei dem man einfach den kompletten Ordner draufzieht gar nicht schlecht. Ich komm nur nicht ganz dahinter, wie ich eine Schleife bauen kann, bei der immer nur die beiden zusammengehörenden Bilder (jpg + tif) geöffnet werden.

als Antwort auf: [#490461] Top

Hans Haesler  M  p
Beiträge: 3884

22. Feb 2012, 09:36

Beitrag #19 von 31
Beitrag ID: #490465

Bewertung:

(579 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Hallo Patzi,

ich lasse mal dem Hans-Gerd den Vortritt. :-)

Gruss, Hans

als Antwort auf: [#490462] Top

HFPatzi
Beiträge: 27

22. Feb 2012, 09:38

Beitrag #20 von 31
Beitrag ID: #490466

Bewertung:

(573 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


hehe, alles klar. Nicht dass ihr euch noch streitet ;-)

als Antwort auf: [#490465] Top

Hans Haesler  M  p
Beiträge: 3884

22. Feb 2012, 10:13

Beitrag #21 von 31
Beitrag ID: #490470

Bewertung:

(548 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Hallo Patzi,

keine Angst, Streit würde es nicht geben. :-)

Aber es macht keinen Sinn, wenn zwei gleichzeitig ihre Zeit opfern, um ein Problem zu lösen.

Etwas ähnliches hatte ich zwar schon mal gemacht, wüsste also, wie es anzupacken ist. Doch dank des Einsatzes von Hans-Gerd kann ich mich meinem aktuellen Projekt widmen.

Gruss, Hans

als Antwort auf: [#490466] Top

-hans-
Beiträge: 391

22. Feb 2012, 10:29

Beitrag #22 von 31
Beitrag ID: #490471

Bewertung:

(526 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Ollah,

hab' ich hier gerade keinen Mac ;-(

Aber ich bin mir sicher, dass schaffst Du ohne vorgegebenen Code.

Einfacher möglicher Aufbau:
Liste Dir die Namen der gedroppten Dateien.
Hat eine Datei das Suffix jpg, dann setze Dir daraus den Dateinamen und Pfad für das Tif-Pendant zusammen. Schaue ob die Datei existiert. Wenn ja, dann beide öffnen und abarbeiten ... Wenn Nein, dann LogFile schreiben o.ä ...

Sonst gerne heut' abend, aber Hans hat natürlich recht ... habe mich hier voreilig eingemischt. Bitte ich zu entschuldigen :)
Lieben Gruß

Hans-Gerd Claßen

als Antwort auf: [#490462] Top

-hans-
Beiträge: 391

22. Feb 2012, 18:05

Beitrag #23 von 31
Beitrag ID: #490537

Bewertung:

(466 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


hi,

schau mal, ob Du hiermit weiter kommst ... (nicht rekursiv!)

Code
property logPath : POSIX path of (path to desktop as text) --hier wird die Error.log geschrieben   

on open listOfFolders
set TID to AppleScript's text item delimiters

set myFolder to (item 1 of listOfFolders) as text
set fileNameList to list folder myFolder without invisibles

processList(myFolder, fileNameList)
set AppleScript's text item delimiters to TID
end open


on processList(myFolder, fileNameList)
set AppleScript's text item delimiters to "."
repeat with i from 1 to count of fileNameList
set myPic to item i of fileNameList
if text item -1 of myPic is "jpg" then
try
set tifPath to ((myFolder & (text 1 thru -5 of myPic) & ".tif") as text)
--display dialog tifPath
alias tifPath
set jpgPath to (myFolder & myPic) as text
sendToPhotoshop(jpgPath, tifPath)
on error e
display alert e giving up after 2
do shell script "echo " & quoted form of (e) & " >> " & quoted form of (logPath & "Error.log")
end try
end if
end repeat

end processList


on sendToPhotoshop(jpgPath, tifPath)
--
end sendToPhotoshop

Lieben Gruß

Hans-Gerd Claßen

als Antwort auf: [#490466] Top

HFPatzi
Beiträge: 27

22. Feb 2012, 18:55

Beitrag #24 von 31
Beitrag ID: #490541

Bewertung:

(453 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Hi Hans,

sieht sehr vielversprechend aus, vielen Dank!

ich habe nach "on sendtophotoshop" den Code von Hans einfügt.
Sieht nun folgendermaßen aus:

Code
property logPath : POSIX path of (path to desktop as text) --hier wird die Error.log geschrieben    

on open listOfFolders
set TID to AppleScript's text item delimiters

set myFolder to (item 1 of listOfFolders) as text
set fileNameList to list folder myFolder without invisibles

processList(myFolder, fileNameList)
set AppleScript's text item delimiters to TID
end open


on processList(myFolder, fileNameList)
set AppleScript's text item delimiters to "."
repeat with i from 1 to count of fileNameList
set myPic to item i of fileNameList
if text item -1 of myPic is "jpg" then
try
set tifPath to ((myFolder & (text 1 thru -5 of myPic) & ".tif") as text)
--display dialog tifPath
alias tifPath
set jpgPath to (myFolder & myPic) as text
sendToPhotoshop(jpgPath, tifPath)
on error e
display alert e giving up after 2
do shell script "echo " & quoted form of (e) & " >> " & quoted form of (logPath & "Error.log")
end try
end if
end repeat

end processList


on sendToPhotoshop(jpgPath, tifPath)
tell application "Adobe Photoshop CS4"
activate

open tifPath
open jpgPath

set docName1 to name of document 1
set docName2 to name of document 2
if docName1 ends with ".jpg" then
set sourceDoc to docName1
set targetDoc to docName2
else
set sourceDoc to docName2
set targetDoc to docName1
end if
-- eine Schleife durch die Pfade des Quelldokuments
repeat with p from 1 to count of path items of document sourceDoc
-- das Quelldokument in den Vordergrund rücken
set current document to document sourceDoc
-- den aktuellen Pfad auswählen
select path item p of document sourceDoc
-- kopieren
copy
-- das Zieldokument in den Vordergrund rücken
set current document to document targetDoc
-- den Handler aufrufen, welcher den Pfad einsetzt
my pastePath()
-- die Auswahl im Zieldokument aufheben
try
deselect every path item of document targetDoc
end try
end repeat
end tell

end sendToPhotoshop

on pastePath()
tell application "System Events"
keystroke "v" using {command down}
end tell
end pastePath


Das einzige Problem ist, das die Bilder in Photoshop nicht geöffnet werden. Hast evtl. eine Idee warum?

Danke schonmal im Vorraus!

Gruß
Patzi

als Antwort auf: [#490537] Top

-hans-
Beiträge: 391

22. Feb 2012, 19:14

Beitrag #25 von 31
Beitrag ID: #490543

Bewertung:

(444 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Hallo,

an den handler werden nur strings übergeben ...
PS benötigt alias oder file.
Bekommst Du keine Fehlermeldung von PS?

versuch für's Öffnen mal:

open file tifPath
open file jpgPath

Lieben Gruß

Hans-Gerd Claßen

edit: Ich denke außerdem, dass Du die jeweils offenen dokus sichern und schliessen musst bevor Du das nächste Paar öffnest ...
Lieben Gruß

Hans-Gerd Claßen

als Antwort auf: [#490541]

(Dieser Beitrag wurde von -hans- am 22. Feb 2012, 20:09 geändert)
Top

HFPatzi
Beiträge: 27

23. Feb 2012, 08:33

Beitrag #26 von 31
Beitrag ID: #490558

Bewertung:

(388 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Guten Morgen,

habe das skript "korrigiert". Es Verhält sich auch schon anders. Das Problem dabei ist, dass es nicht brav immer die namensgleichen Dateipaare öffnet, sondern das ganze aussieht als ginge es wild durcheinander, wobei das sourceDoc wohl immer gleich bleibt.

Habe ich noch irgendwo etwas übersehen?

Hier das Skript:

Code
property logPath : POSIX path of (path to desktop as text) --hier wird die Error.log geschrieben    

on open listOfFolders
set TID to AppleScript's text item delimiters

set myFolder to (item 1 of listOfFolders) as text
set fileNameList to list folder myFolder without invisibles

processList(myFolder, fileNameList)
set AppleScript's text item delimiters to TID
end open


on processList(myFolder, fileNameList)
set AppleScript's text item delimiters to "."
repeat with i from 1 to count of fileNameList
set myPic to item i of fileNameList
if text item -1 of myPic is "jpg" then
try
set tifPath to ((myFolder & (text 1 thru -5 of myPic) & ".tif") as text)
--display dialog tifPath
alias tifPath
set jpgPath to (myFolder & myPic) as text
sendToPhotoshop(jpgPath, tifPath)
on error e
display alert e giving up after 2
do shell script "echo " & quoted form of (e) & " >> " & quoted form of (logPath & "Error.log")
end try
end if
end repeat

end processList


on sendToPhotoshop(jpgPath, tifPath)
tell application "Adobe Photoshop CS4"
activate

open file tifPath
open file jpgPath

set docName1 to name of document 1
set docName2 to name of document 2
if docName1 ends with ".jpg" then
set sourceDoc to docName1
set targetDoc to docName2
else
set sourceDoc to docName2
set targetDoc to docName1
end if
-- eine Schleife durch die Pfade des Quelldokuments
repeat with p from 1 to count of path items of document sourceDoc
-- das Quelldokument in den Vordergrund rücken
set current document to document sourceDoc
-- den aktuellen Pfad auswählen
select path item p of document sourceDoc
-- kopieren
copy
-- das Zieldokument in den Vordergrund rücken
set current document to document targetDoc
-- den Handler aufrufen, welcher den Pfad einsetzt
my pastePath()
-- die Auswahl im Zieldokument aufheben
try
deselect every path item of document targetDoc
end try

end repeat

close sourceDoc saving no
delay 2
close targetDoc saving yes
delay 2

end tell

end sendToPhotoshop

on pastePath()
tell application "System Events"
keystroke "v" using {command down}
end tell
end pastePath


Die zwei delays habe ich eingebaut um besser sehen zu können, was passiert.

In meinem Testornder befinden sich folgende Dateien:

1.jpg
1.tif
11.jpg
11.tif
111.jpg
111.tif

Sollte also eigentlich keine Probleme zwecks irgendwelcher Namensgleichheiten geben.

Gruß
Patzi

als Antwort auf: [#490543] Top

-hans-
Beiträge: 391

23. Feb 2012, 09:11

Beitrag #27 von 31
Beitrag ID: #490559

Bewertung:

(378 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Hm,

glaube an der Übergabe liegt es nicht ...
Code
on sendToPhotoshop(jpgPath, tifPath) 
display dialog jpgPath & return & tifPath


gibt bei mit immer die richtigen Dateipaare!

Vielmehr bekomme ich hier Fehlermeldungen (PS CS3)
Zitat „Adobe Photoshop CS3“ hat einen Fehler erhalten: „"1.jpg"“ versteht die Nachricht „close“ nicht.
„Adobe Photoshop CS3“ hat einen Fehler erhalten: Fehler in einer Skripterweiterung.


Dann bleiben Dateien offen und das führt natürlich zu Chaos :)

Getestet mit PS CS3 unter 10.7.3

Muss jetzt weg ...

Lieben Gruß

hans-Gerd Claßen
Lieben Gruß

Hans-Gerd Claßen

als Antwort auf: [#490558] Top

-hans-
Beiträge: 391

23. Feb 2012, 11:29

Beitrag #28 von 31
Beitrag ID: #490571

Bewertung:

(347 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


... targetDoc und sourceDoc sind Strings keine Dokumente.

Code
close v : close the document 
close document : the document object or objects to be operated upon

>>close "1.jpg"<< dürfte also garnicht funktionieren.

Zum schließen deshalb:
Code
close document sourceDoc saving no  
close document targetDoc saving yes


So läuft es bei mir ohne Fehler.
Lieben Gruß

Hans-Gerd Claßen

als Antwort auf: [#490559] Top

HFPatzi
Beiträge: 27

23. Feb 2012, 11:43

Beitrag #29 von 31
Beitrag ID: #490577

Bewertung:

(336 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


Hans und -hans-!

Ihr seid die besten...ohne scheiss ;-)

Funktioniert tadellos, darum: Vielen Dank an euch beide!

zum einen weils mal wieder eine immense Arbeitserleichterung ist und zum Anderen, weil ich wieder einiges dazulernen konnte!

Hier das finale Skript:

Code
property logPath : POSIX path of (path to desktop as text) --hier wird die Error.log geschrieben    

on open listOfFolders
set TID to AppleScript's text item delimiters

set myFolder to (item 1 of listOfFolders) as text
--display dialog myFolder
set fileNameList to list folder myFolder without invisibles

processList(myFolder, fileNameList)
set AppleScript's text item delimiters to TID
end open


on processList(myFolder, fileNameList)
set AppleScript's text item delimiters to "."
repeat with i from 1 to count of fileNameList
set myPic to item i of fileNameList
if text item -1 of myPic is "jpg" then
try
set tifPath to ((myFolder & (text 1 thru -5 of myPic) & ".tif") as text)
alias tifPath
set jpgPath to (myFolder & myPic) as text
sendToPhotoshop(jpgPath, tifPath)
on error e
display alert e giving up after 2
do shell script "echo " & quoted form of (e) & " >> " & quoted form of (logPath & "Error.log")
end try
end if
end repeat

end processList


on sendToPhotoshop(jpgPath, tifPath)
tell application "Adobe Photoshop CS4"
activate

open file tifPath
open file jpgPath

tell application "Adobe Photoshop CS4"
set docName1 to name of document 1
set docName2 to name of document 2
if docName1 ends with ".jpg" then
set sourceDoc to docName1
set targetDoc to docName2
else
set sourceDoc to docName2
set targetDoc to docName1
end if
-- eine Schleife durch die Pfade des Quelldokuments
repeat with p from 1 to count of path items of document sourceDoc
-- das Quelldokument in den Vordergrund rücken
set current document to document sourceDoc
-- den aktuellen Pfad auswählen
select path item p of document sourceDoc
-- kopieren
copy
-- das Zieldokument in den Vordergrund rücken
set current document to document targetDoc
-- den Handler aufrufen, welcher den Pfad einsetzt
my pastePath()
-- die Auswahl im Zieldokument aufheben
try
deselect every path item of document targetDoc
end try

end repeat

close document targetDoc saving yes
close document sourceDoc saving no

end tell
end tell

end sendToPhotoshop

on pastePath()
tell application "System Events"
keystroke "v" using {command down}
end tell
end pastePath


Gruß
Patzi

als Antwort auf: [#490571]

(Dieser Beitrag wurde von HFPatzi am 23. Feb 2012, 11:43 geändert)
Top

-hans-
Beiträge: 391

24. Feb 2012, 08:45

Beitrag #30 von 31
Beitrag ID: #490679

Bewertung:

(293 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Photoshop Pfade Kopieren


überschwenglich, aber nett ;-)

thx
Hans-Gerd Claßen
Lieben Gruß

Hans-Gerd Claßen

als Antwort auf: [#490577] Top
« « 1 2 3 » »  


Forenindex » Programmierung/Entwicklung » AppleScript » Photoshop Pfade Kopieren


^