RAW Dateien in Ordner verschieben

Diskutiere das Thema RAW Dateien in Ordner verschieben im Forum Scripting und Automatisierung

  1. theffish

    theffish Thread Starter Registriert

    Beiträge:
    4
    Zustimmungen:
    3
    Mitglied seit:
    07.07.2005
    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
     
  2. Phrasenbieger

    Phrasenbieger Mitglied

    Beiträge:
    695
    Zustimmungen:
    43
    Mitglied seit:
    15.04.2008
    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...
     
  3. Hans-Ulrich

    Hans-Ulrich Mitglied

    Beiträge:
    486
    Zustimmungen:
    22
    Mitglied seit:
    07.09.2005
    Hallo,
    mach es nicht so kompliziert, -> meine Lösung siehe Bild
    nimm den Automator - funktioniert bei mir sehr gut
     

    Anhänge:

  4. theffish

    theffish Thread Starter Registriert

    Beiträge:
    4
    Zustimmungen:
    3
    Mitglied seit:
    07.07.2005
    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.
     
  5. mausfang

    mausfang Mitglied

    Beiträge:
    404
    Zustimmungen:
    74
    Mitglied seit:
    04.08.2016
    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?
     
  6. mausfang

    mausfang Mitglied

    Beiträge:
    404
    Zustimmungen:
    74
    Mitglied seit:
    04.08.2016
    Haben Deine RAW-Files die Extension RAF ?
     
  7. theffish

    theffish Thread Starter Registriert

    Beiträge:
    4
    Zustimmungen:
    3
    Mitglied seit:
    07.07.2005
    Ja
     
  8. mausfang

    mausfang Mitglied

    Beiträge:
    404
    Zustimmungen:
    74
    Mitglied seit:
    04.08.2016
    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
     
  9. mausfang

    mausfang Mitglied

    Beiträge:
    404
    Zustimmungen:
    74
    Mitglied seit:
    04.08.2016
    ... 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.
     
  10. theffish

    theffish Thread Starter Registriert

    Beiträge:
    4
    Zustimmungen:
    3
    Mitglied seit:
    07.07.2005
    Hallo mausfang, Vielen herzlichen Dank für Deine Hilfe. Das script macht genau das was es soll :)
     
Die Seite wird geladen...

MacUser.de weiterempfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...