[GastForen Programmierung/Entwicklung AppleScript Ordner suchen und Pfad auslesen

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

Ordner suchen und Pfad auslesen

mb_new
Beiträge gesamt: 123

12. Mär 2014, 11:50
Beitrag # 1 von 9
Bewertung:
(8508 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
arbeite grad wieder an einem Script, welches ich in einen Automator Workflow einbauen will, scheitere aber an einer Sache:

Ich möchte mit einem Script einen Ordner auf einem Laufwerk suchen.
Und zwar soll das Script einen Ordner finden, der "PDF" enthält und den Pfad dorthin retournieren.
Die Ordner die gesucht werden, heissen aber immer ein wenig anders, also zb "HighresPDF", "Pdfs", Low"Pdf", ..

Ist das möglich?

Denn ich habs mit dem Automator probiert, doch der bleibt hängen, wenn ich auf dem Laufwerk mit "Ordner suchen" ans Werk gehe.

Danke
Martin
X

Ordner suchen und Pfad auslesen

mb_new
Beiträge gesamt: 123

13. Mär 2014, 13:25
Beitrag # 2 von 9
Beitrag ID: #524830
Bewertung:
(8460 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo nochmals,

ich bin schon ein wenig weiter:
Prinzipiell geht es darum, dass ich Daten auf einem Server archivieren will. Nur je nach Job heißen eben die Ordner (sind auf dem Archivserver fixangelegt) jeweils anders. Aber "Pdf" ist immer enthalten.

Das Ziel gebe ich über einen Dialog (viaAutomator) an.
In diesem Zielordner befindet sich der "Pdf" Ordner

Nun schaffe ich aus im Automator den Pfad zum Zielordner an ein AppleScript zu übergeben, doch ich weiß nicht, wie ich nun in diesem Ordner nach den "Pdf" Ordnern suche und dann den vollständigen Pfad (Zielrordner + "Pdf") wieder bekomme.

Meinem Verständis nach müsste es etwas in der Art sein:

every item of folder (mein Zielordner) whose name contains "Pdf"

Nur ich bekomms nicht hin.

Danke für Inputs

lg
martin


als Antwort auf: [#524780]

Ordner suchen und Pfad auslesen

Hans Haesler
  
Beiträge gesamt: 5826

13. Mär 2014, 17:50
Beitrag # 3 von 9
Beitrag ID: #524868
Bewertung:
(8433 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo mb_new,

wenn ich mit folgendem Script einen Zielordner auswähle ...

Code
set targetFolder to choose folder 

tell application "Finder"
every item of folder targetFolder whose name contains "Pdf"
end tell

... dann ist das Ergebnis eine Liste von Finderobjekten, welche alle im Namen die Buchstaben "pdf" aufweisen.

Und zwar sowohl Ordner als auch Dateien, welche sich in der ersten Ebene des gewählten Ordners befinden.

Um das Ergebnis auf Ordner zu beschränken, muss anstelle von item ganz einfach folder verwendet werden:

Code
set targetFolder to choose folder 

tell application "Finder"
every folder of folder targetFolder whose name contains "Pdf"
end tell

Gruss, Hans


als Antwort auf: [#524830]
(Dieser Beitrag wurde von Hans Haesler am 13. Mär 2014, 19:38 geändert)

Ordner suchen und Pfad auslesen

Hans Haesler
  
Beiträge gesamt: 5826

13. Mär 2014, 19:37
Beitrag # 4 von 9
Beitrag ID: #524874
Bewertung:
(8418 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo mb_new,

oder ... wenn Du nur eine Liste der Ordner-Namen bekommen möchtest ...

Code
set targetFolder to (choose folder) as Unicode text 

tell application "Finder"
name of every folder of folder targetFolder whose name contains "Pdf"
end tell

... weil targetFolder den Pfad des gewählten Ordners enthält.

Gruss, Hans


als Antwort auf: [#524868]

Ordner suchen und Pfad auslesen

mb_new
Beiträge gesamt: 123

14. Mär 2014, 10:53
Beitrag # 5 von 9
Beitrag ID: #524900
Bewertung:
(8379 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

danke wieder einmal für deine prompten Antworten und Lösungen.

Prinzipiell versteh ich das.
NUR: ich hab das ja in einen Automator Workflow eingebaut, und da bekomm ichs (wegen meiner bescheidenen Skriptkenntnisse) nicht hin, dass mir dann der gefundene Ordner als Pfad retourniert wird, sodass ich das als Variable setzen kann.

dh ich hab einmal eingebaut (input ist der Zielordner, der über einen Dialog ausgewählt wird):

Code
on run {input, parameters} 

set targetFolder to input

tell application "Finder"
every folder of folder targetFolder whose name contains "Test_Pdf"
end tell

end run




Danke schon mal
Martin


als Antwort auf: [#524874]

Ordner suchen und Pfad auslesen

Hans Haesler
  
Beiträge gesamt: 5826

14. Mär 2014, 12:42
Beitrag # 6 von 9
Beitrag ID: #524913
Bewertung:
(8361 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

bitte sehr.

Ich bin unterwegs und kann Dir deshalb erst heute Abend behilflich sein.
Immer in der Hoffnung, dass mir jemand zuvorkommt. :-)

Gruss, Hans


als Antwort auf: [#524900]

Ordner suchen und Pfad auslesen

mb_new
Beiträge gesamt: 123

14. Mär 2014, 15:04
Beitrag # 7 von 9
Beitrag ID: #524927
Bewertung:
(8341 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
durch try & error bin ich ein wenig weiter.

Code
on run {input, parameters} 

tell application "Finder"
set targetFolder to item 1 of input
set Foldername to every folder of folder targetFolder whose name contains "LowRes" as string
set thePath to POSIX path of ":" & (Foldername)
end tell
return thePath

end run


Ich bekomm den Pfad retour, allerdings nur, wenn ich irgendetwas davor (in diesem Fall ":") hinschreibe.

Allerdings kommt der Pad dann so raus:
/Macintosh HD:Users:username:Desktop:HK_:LowRes_Pdf:

Ich glaub ich bin der Lösung nahe, doch es hakt noch.

Danke
Martin


als Antwort auf: [#524913]

Ordner suchen und Pfad auslesen

Hans Haesler
  
Beiträge gesamt: 5826

14. Mär 2014, 19:15
Beitrag # 8 von 9
Beitrag ID: #524939
Bewertung:
(8275 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

brauchst Du den Pfad in POSIX-Schreibweise? Falls ja, werden wir später darauf zurückkommen.

Zunächst die Erklärung des Ergebnisses von 'every folder', welches man so bekommt:

Code
tell application "Finder" 
set folderList to every folder of folder targetFolder whose name contains "LowRes"
end tell

Das ergibt eine Liste von "Finder"-Objekten. Jedes Element der Liste sieht ungefähr so aus:

Code
{folder "LowRes_Pdf" of folder "HK_" of folder "Desktop" of folder "username" of ¬ 
folder "Users" of startup disk of application "Finder"}


Dieses erste Element kann man so in einen HFS-Pfad verwandeln:

Code
set folderPath to item 1 of folderList as Unicode text 

Und das kommt dabei heraus:

Code
"Macintosh HD:Users:username:Desktop:HK_:LowRes_Pdf:" 

Dein letztes Snippet entsprechend abgeändert:

Code
on run {input, parameters} 

tell application "Finder"
set targetFolder to item 1 of input
set folderList to every folder of folder targetFolder whose name contains "LowRes"
end tell
return item 1 of folderList as Unicode text

end run

Aber auf diese Weise wird nur ein Ordner zurückgegeben. Wenn mehrere vorhanden sind, dann werden die weiteren nicht beachtet.

Würdest Du bitte eine Outline der Aktion posten? Eine Aufzählung der Schritte, damit klar wird, was geschehen soll.

Gruss, Hans


als Antwort auf: [#524927]
(Dieser Beitrag wurde von Hans Haesler am 15. Mär 2014, 15:08 geändert)

Ordner suchen und Pfad auslesen

mb_new
Beiträge gesamt: 123

18. Mär 2014, 10:52
Beitrag # 9 von 9
Beitrag ID: #525024
Bewertung:
(8133 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hans,

was soll ich sagen: PERFEKT.
Danke, mit deinem Input läuft das Ding einwandfrei. Einzig, dass ich das in POSIX gebraucht habe (anscheinend will das der Server auf dem ich das ausführe so) klappt das mit deiner Lösung wunderbar.
Dass aus der Liste nur das erste Element retourniert wird, macht ncihts, da es immer nur einen entsprechenden Ordner in der Struktur gibt, den ich finden muss.

Herzlichen Dank
Martin


als Antwort auf: [#524939]
X