Script zur Umbenennung von Files nach Excel Liste

M

mnbenz

Mitglied
Thread Starter
Dabei seit
06.03.2019
Beiträge
2
Reaktionspunkte
0
Hallo MacUser Gemeinde,

ich habe in der Arbeit die Aufgabe bekommen, ca. 27.000 Musikfiles mit A-D Versionen nach einer vorgegebenen Excel Liste umzubenennen. Das heißt ich habe die originalen Files + Excel Liste in einem Ordner und soll die File Namen anhand der Liste umbenennen. Beispielsweise:

DL 60s Rock 148bpm A zu Rock In The 60s 148bpm A

Habe dazu auch einen Screenshot (Grün = Original; Rot = neuer Name) hochgeladen, die Liste geht natürlich bedeutend weiter.

Nachdem ich mich jetzt etwas in AppleScript eingelesen habe (aber zugegebenermaßen noch nicht wirklich durchblicke), dachte ich mir dass es bestimmt die Möglichkeit gibt dafür ein Script zu schreiben. So nach dem Motto:

Rename File Zeile 1 "Originalname (Spalte2)" zu "Neuer Name (Spalte3).
repeat

Dafür würde sich die Excel Liste ja anpassen lassen, brauche ja nur die Originalnamen und Neuen Namen.

Hat jemand eine Idee wie das aussehen könnte oder ob es überhaupt funktioniert? Wäre um jede Hilfe dankbar, da ich händisch bestimmt einen oder mehrere Tage dafür brauche.

Besten Gruß und Danke im Vorraus,

Michael
 

Anhänge

  • BeispielEXCEL.jpg
    BeispielEXCEL.jpg
    121,4 KB · Aufrufe: 138
Hallo,

haben die Dateien immer die gleiche Endung?

Viele Grüße
 
Sooo…

Ich habe es Dir getippt.
In der Schleife musst Du möglicherweise noch die Buchstaben für die Spalten korrigieren.
Die anderen notwenigen Konfigurationen erschließen sich aus dem Kontext.

Viele Grüße

#

Und noch ein regulatorischer Hinweis:

Mit fremden Sachen macht man immer erst eine Sichtprüfung.
Dann ein paar Tests und erst wenn man sich "sicher" ist, dann lässt man die Aktion auf die Produktivdaten los.
Und natürlich hat man immer ein Backup, ist doch klar :D

Code:
--


property pDirectoryPath : "/ PFAD / ZUM / ORDNER /Desktop/Script-Test/"


property pFileExtension : "m4a"


property pExcelRowIndexStart : 1


property pExcelRowIndexEnd : 5


--


set nExcelRowIndex to pExcelRowIndexStart


--


repeat

 

    --

 

    if (nExcelRowIndex > pExcelRowIndexEnd) then

     

        exit repeat

     

    end if

 

    --

 

    set oldName to ""

 

    set newName to ""

 

    --

 

    try

     

        --

     

        tell application "Microsoft Excel.app"

         

            --

         

            set oldName to get «class DPVu» of «class ccel» ("J" & nExcelRowIndex)

         

            set newName to get «class DPVu» of «class ccel» ("C" & nExcelRowIndex)

         

            --

         

        end tell

     

        --

     

        my renameFile(oldName, newName)

     

        --

     

    on error the errorMessage number the errorNumber

     

        --

     

        display alert errorNumber message errorMessage

     

        --

     

    end try

 

    --

 

    set nExcelRowIndex to nExcelRowIndex + 1

 

    --

 

end repeat


--




--


on renameFile(anOldName, aNewName)

 

    --

 

    if (length of anOldName < 1) then

     

        return -1

     

    end if

 

    --

 

    if (length of aNewName < 1) then

     

        return -2

     

    end if

 

    --

 

    set newFilePath to pDirectoryPath & aNewName & "." & pFileExtension

 

    if (my isItemAtPath(newFilePath) is true) then

     

        return -3

     

    end if

 

    --

 

    set oldFilePath to pDirectoryPath & anOldName & "." & pFileExtension

 

    if (my isItemAtPath(oldFilePath) is false) then

     

        return -4

     

    end if

 

    --

 

    -- display alert "Umbenennen" message (oldFilePath & return & newFilePath)

 

    --

 

    do shell script "mv " & quoted form of oldFilePath & " " & quoted form of newFilePath

 

    --

 

    return 1

 

    --

 

end renameFile


--

on isItemAtPath(aPOSIXPath)

 

    --

 

    try

     

        --

     

        tell application "System Events" to file aPOSIXPath

     

        --

     

        return true

     

        --

     

    end try

 

    --

 

    return false

 

    --

 

end isItemAtPath


--
 
  • Gefällt mir
Reaktionen: mnbenz und KOJOTE
@little_pixel Genial! Vielen Dank, werde es heute testen und dir Feedback geben. Danke auch für den regulatorischen Hinweis ;)
 
Zurück
Oben Unten