Ordnerinhalt auflisten und weiter mit den Dateien arbeiten

ObiTobi

ObiTobi

Aktives Mitglied
Thread Starter
Dabei seit
05.11.2009
Beiträge
1.536
Reaktionspunkte
91
Hallo,

also irgendwie mit den Ordnern habe ich scheinbar meine Probleme.

Mit dem Code:

PHP:
set cardNames to {"EOS5D-001", "EOS5D-002", "EOS7D-001", "EOS7D-002", "EOSM-001", "EOSM-002"}
tell application "Finder" to set driveNames to name of every disk
repeat with driveName in driveNames
   if driveName is in cardNames then
      set SourceDrive to driveName
   end if
end repeat

finde ich mein sourceDrive.

Später nutze ich es um mein sourceDir zu setzen und zwar mit:

PHP:
set sourceDir to "/Volumes/" & sourceDrive & "/dcim/100eos5d/"

Leider wenn ich später alle Dateien auslesen will die sich in dem Ordner befinden und Erstellungsdatum jeder Datei auszugeben:

PHP:
ell application "Finder"
	set fileList to files of folder sourceDir
	repeat with fileName in fileList
		set fileDate to creation date of fileName
		WrtiteLogFile("fileName ist " & fileName & " fileDate ist " & fileDate)
	end repeat
end tell

kriege ich Fehlermeldung:

tell application "Finder"
get every file of folder "/Volumes/EOS5D-001/dcim/100eos5d/"
--> error number -1728 from folder "/Volumes/EOS5D-001/dcim/100eos5d/"
Ergebnis:
error "„Finder“ hat einen Fehler erhalten: „folder \"/Volumes/EOS5D-001/dcim/100eos5d/\"“ kann nicht gelesen werden." number -1728 from folder "/Volumes/EOS5D-001/dcim/100eos5d/"

Mit der Shell stell eich natürlich fest, dass der Ordner da ist und ich auch den lesen kann

Letztendlich geht es um folgendes: Wenn das sourceDir gesetzt ist, will ich von jeder Datei das Erstellungsdatum wissen und zwar "zerlegt" in Tag (z.B 08) Monat (z.B 02) Jahr (z.B 2013)
Dann schauen um die Struktur in meinem destinationDir existiert
2013
-- 02
---- 08

Ist etwas nicht da so soll es angelegt werden.
Anschliessend eben Datei von sourceDir ins entsprechende destinationDir kopieren. Ist der Vorgang Erfolgreich, die Quelldatei löschen. Bei Kopieren die Dateien in Kleinschreibung "umbenennen"

Tobi
 
wäre nicht ein Shell-Script schöner und möglicherweise einfacher als Applescript mit seinem tell application?
 
An sich gute Idee, sehe trotzdem den Wald vor lauter Bäume nicht.

Das Problem scheint hier die "Mischung" zu sein

set sourceDir to "/Volumes/" & sourceDrive & "/dcim/100eos5d/"

Und zwar das "sourceDrive".
Wenn ich es als
set sourceDir to alias "Volumes:EOS5D-001:dcim:100eos5d:"

geht das. Wenn ich aber aus dem EOS5D-001 wieder sourceDrive mache, geht es wieder nicht :confused:
 
wäre nicht ein Shell-Script schöner und möglicherweise einfacher als Applescript mit seinem tell application?

Auch wenn etliche Leute es wahrscheinlich auch zu recht genau so sehen, wollte ich in dem Script so fern es sich vermeiden lässt, komplett auf "do shell script" verzichten.

Meinst Du die komplette Aufgabe als Shell Script - dann ist meine Antwort - nee. Ich habe es z.Z mit Perl und es macht genau was ich mache. Es ist aber in die Jahre gekommen und deckt nicht komplett alles was ich inzwischen gerne hätte.

Tobi
 
Scheinbar nicht nur (siehe auch oben).

Wenn das "EOS5D-001" als Variable übergeben wird geht es nicht.

tell application "Finder"
get every item of folder {alias "Macintosh HD:Volumes:", "EOS5D-001", ":dcim:100eos5d:"}
--> error number -1700 from {alias "Macintosh HD:Volumes:", "EOS5D-001", ":dcim:100eos5d:"} to integer
Ergebnis:
error "„Finder“ hat einen Fehler erhalten: {alias \"Macintosh HD:Volumes:\", \"EOS5D-001\", \":dcim:100eos5d:\"} kann nicht in Typ integer umgewandelt werden." number -1700 from {alias "Macintosh HD:Volumes:", "EOS5D-001", ":dcim:100eos5d:"} to integer


OK scheinbar habe ich diesen Punkt doch noch gefunden.
Mit dieser Zeile funktioniert es :

PHP:
set sourceDir to alias "Volumes:" & sourceDrive & ":dcim:100eos5d:" as string

Jetzt geht es weiter an das Erstellungsdatum :)
 
Zurück
Oben Unten