RAW Dateien in Ordner verschieben

T

theffish

Mitglied
Thread Starter
Dabei seit
07.07.2005
Beiträge
4
Reaktionspunkte
3
Hallo,

ich möchte in einem Ordner Bilder automatisch sortieren und zwar sollen alle RAW Bilder zu denen eine JPG Datei existiert (also beide Dateien haben den selben Dateinamen) in einen separaten Ordner verschoben werden.

Da ich nicht viel Ahnung von der Apple Script Programmierung habe würde ich mich über Hilfe sehr freuen. Hier das Script. Es bricht immer dort ab wo die RAW Datei in den separaten Ordner verschoben werden soll. Fehlermeldung "Finder hat einen Fehler erhalten: Die Routine kann Objekte dieser Klasse nicht bearbeiten".

Code:
set newExt to "RAF"
set sourceFolder to choose folder
set destFolder to choose folder


tell application "Finder"
    
    # Make a list of the selected files in Finder
    set selFiles to selection as list
    
    set TID to AppleScript's text item delimiters
    
    repeat with eachFile in selFiles
        
        # Make a text item list of the file name delimited by points
        set filePath to eachFile as text
        set AppleScript's text item delimiters to {":"}
        set fileName to last text item of filePath
        set AppleScript's text item delimiters to {"."}
        set textItems to text items of fileName
        
        set newName to ""
        set numItems to number of items in textItems
        set n to 1
        
        repeat numItems times
            
            if "JPG" is in textItems then
                
                if n is not numItems then
                    set newName to newName & item n in textItems & "."
                    set n to n + 1
                end if
                
                display dialog newName & newExt
                
                move newName & newExt to destFolder
            end if
        end repeat
        
        
    end repeat
    
end tell
 
Brauchst Du echt ein Script?
Also sind das viele viele Ordner?

Weil wenn es nur ein Ordner ist dann wäre das ja mit drei Mausklicks getan...
 
  • Gefällt mir
Reaktionen: mausfang
Hallo,
mach es nicht so kompliziert, -> meine Lösung siehe Bild
nimm den Automator - funktioniert bei mir sehr gut
 

Anhänge

  • Bildschirmfoto 2018-05-15 um 08.10.50.jpg
    Bildschirmfoto 2018-05-15 um 08.10.50.jpg
    158,4 KB · Aufrufe: 204
  • Gefällt mir
Reaktionen: KumpelKalle
Hallo,
Vielen Dank für den Tip. Ich habe in meiner Beschreibung oben allerdings ein entscheidendes Detail vergessen. Entschuldigung dafür. Es sollen nur dann die RAW Dateien verschoben werden wenn auch eine JPG Datei mit exakt gleichem Dateinamen existiert. Der Grund ist der, dass ich erst alle JPG Dateien sortiere also nicht gewünschte Aufnahme lösche. Es bleiben dann sehr viele RAW Dateien übrig die ich nicht weiter benötige. Diese sollen auch nicht verschoben werden.
 
  • Gefällt mir
Reaktionen: mausfang
Hallo,
Vielen Dank für den Tip. Ich habe in meiner Beschreibung oben allerdings ein entscheidendes Detail vergessen. Entschuldigung dafür. Es sollen nur dann die RAW Dateien verschoben werden wenn auch eine JPG Datei mit exakt gleichem Dateinamen existiert. Der Grund ist der, dass ich erst alle JPG Dateien sortiere also nicht gewünschte Aufnahme lösche. Es bleiben dann sehr viele RAW Dateien übrig die ich nicht weiter benötige. Diese sollen auch nicht verschoben werden.

Du brauchst ein Skript, dass die RAW-Dateien durchgeht, und prüft ob ein JPG mit dem selben Namen vorhanden ist. Sollen die verwaisten RAW-Dateien gelöscht werden?
 
ich möchte in einem Ordner Bilder automatisch sortieren und zwar sollen alle RAW Bilder zu denen eine JPG Datei existiert (also beide Dateien haben den selben Dateinamen) in einen separaten Ordner verschoben werden.

Mit einem Shell-Script könnte ich Dir dienen:

Code:
#!/bin/bash
# mvext() moves files with extension ext1
# to another destination
# when there is a file with the same name
# with extension ext2

# source path
path="/Users/benutzername/Desktop/pictures/"

# extensions
# ls $path
ext1=.RAF
# ls ${path}/*${ext1}
ext2=.JPG
#ls ${path}/*${ext2}

# destination path
dest="/Users/benutzername/Desktop/pictures/RAF/"
# check if destination path exists
if [ ! -e $dest ]
then
    echo ${dest} "existiert nicht!"
    exit
fi

# loop throug files with ext1
for i in ${path}/*${ext1}
do
    echo "Prüfe: $i"
        # cut extension
        name=$(echo "$i" | cut -f 1 -d '.')
        # check existance of file with ext2
        if [ -e ${name}${ext2} ]
        then
            #echo ${ext2}" existiert."
            echo "Verschiebe" ${name}${ext1} nach $dest
            mv $i $dest
        fi
done

Ich hatte zwar noch nicht viel Zeit es zu testen, aber ich denke es funktioniert.

vorher.png nacher.png
 
Zuletzt bearbeitet:
Da ich nicht viel Ahnung von der Apple Script Programmierung habe

... habe ich auch nicht ... darum wollte ich das mal ein wenig üben ...

Code:
set searchExt to "RAF"
set sourceFolder to choose folder
set destFolder to choose folder

tell application "Finder"

    #display dialog sourceFolder as text
    #display dialog destFolder as text

    # make list with every file in source folder
    set sourceFiles to get every file of folder sourceFolder as list

  

    # initialisiere counter-variable
    set n to 0
    # loop through list and handle every file
    repeat with eachFile in sourceFiles
        set filePath to eachFile as text
        # get file name with extension(last item after colon)

        set AppleScript's text item delimiters to {":"}
        set fileNameItems to last text item of filePath

        set AppleScript's text item delimiters to {"."}     
        # get file name without extension (item 1)
        set fileName to text item 1 in fileNameItems
        #display dialog fileName

        # get file extension (item)
        set fileExt to text item 2 in fileNameItems
        #display dialog fileExt

        if searchExt is equal to fileExt then
            set checkJPGFile to (sourceFolder as text) & fileName & ".JPG"
            if checkJPGFile exists then
                # makes ugly move sound
                # move eachFile to destFolder --removed due to ugly sound

                # use the move command from System Events's Disk-Folder-File Suite
                # doesn't make any sound
                tell application "System Events"
                    set thisPOSIXPath to the POSIX path of (eachFile as alias)
                    move disk item thisPOSIXPath to destFolder
                    set n to n + 1
                end tell
            else
                #display dialog "JPG to " & eachFile & " does not exist"
            end if         
        end if
    end repeat
    if n > 0 then
        display dialog "Übereinstimmungen gefunden.
" & (n as text) & " " & (searchExt as text) & "-Files erfolgreich kopiert."
    else
        display dialog "Keine Übereinstimmung RAW <-> JPG gefunden."
    end if
end tell

vorher.png nacher.png

Ich bin das Thema allerdings anders herum angegangen wie in Deinem Sript.
  • Zuerst mal: Dein Skript behandelt die im Finder markierten Dateien. (Warum hast Du dann eine Variable für den Quell-Ordner?
  • Ich arbeitet die Inhalte eines Quell-Ordners ab, und verschiebe in den Ziel-Ordner.
  • Einfacher scheint mir, für jede RAW-Datei zu prüfen ob es ein JPG dazu gibt. Falls ja, dann wird das RAW-File in den Ziel-Ordner verschoben. Man kann hier natürlich alles mögliche machen (RAW löschen, falls es kein JPG gibt / JPG & RAW verschieben / whatever)
Falls Du da Ideen hast ... melde Dich. Mal sehen wie ich noch mal Zeit finde.

Hinweis:
  • Achtung habe das Script noch etwas aufgeräumt. Dar waren aus der Vorlage des TE noch verwaiste Variablen, etc.
  • Außerdem bekommt man einen Dialog mit Zusammenfassung am Ende des Scripts.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Malice 313
Hallo mausfang, Vielen herzlichen Dank für Deine Hilfe. Das script macht genau das was es soll :)
 
  • Gefällt mir
Reaktionen: mausfang
Hallo mausfang, Vielen herzlichen Dank für Deine Hilfe. Das script macht genau das was es soll :)

Du benutzt das Apple Script, oder?
War ganz praktisch, dass Du gerade die Anforderung geschrieben hast. Ich brauchte tatsächlich genau das selbe.
Ist irgendwie ätzend gewesen immer beim Sichten auch sofort das RAW löschen zu müssen. War nicht gerade flüssiges Arbeiten.

  • Falls ein Fehler auftaucht - einfach kurz posten. (Ich bin auch nicht so der Programmierer.)
 
Zuletzt bearbeitet:
Zurück
Oben Unten