2010-10-06 28 views
0

J'ai un dossier qui contient les fichiers suivants:Utilisez Automator et AppleScript pour déplacer des fichiers vers des dossiers en fonction du nom du fichier

Elephant.19864.archive.other.pdf 
Elephant.17334.other.something.pdf 
Turnip.19864.something.knight.pdf 
Camera.22378.nothing.elf.pdf 

Je veux que ces fichiers déplacés à la structure suivante

Archive 
    Elephant 
     Elephant.19864.pdf 
     Elephant.17334.pdf 
    Turnip 
     Turnip.19864.pdf 
    Camera.HighRes 
     Camera.HighRes.22378.pdf 

Le Les fichiers générés consistent en un mot ou plusieurs mots, suivis d'une séquence de chiffres, suivis d'autres mots, puis de l'extension. Je veux les déplacer dans un dossier nommé le mot ou les mots avant les nombres, et enlever tous les mots entre les nombres et l'extension (.pdf dans ce cas).

Si le dossier n'existe pas, je dois le créer. Je pensais que ce serait assez simple en utilisant Automator ou un AppleScript, mais je ne semble pas être en mesure de comprendre.

Est-ce facile en utilisant Automator/AppleScript si oui, que dois-je regarderais

Répondre

3

Il est facile, il est tout simplement pas évident au premier abord. Certaines choses pour vous aider à démarrer.

Pour analyser les noms de fichiers pour obtenir vos noms de dossier, vous devez séparer le nom dans une liste ...

set AppleScript's text item delimiters to {"."} 
set fileNameComponents to (every text item in fileName) as list 
set AppleScript's text item delimiters to oldDelims 
--> returns: {"Elephant", "19864", "archive", "other", "pdf"} 

La liste a un indice de base 1, donc le point 1 est « Elephant » et le point 5 est "pdf". Pour écraser le nom du fichier ensemble, tout ce que vous avez besoin est ce

set theFileName to (item 1 of fileNameComponents & item 2 of fileNameComponents & item 5 of fileNameComponents) as string 

Pour créer un dossier, il suffit d'utiliser les éléments suivants ...

tell application "Finder" 
    set theNewFolder to make new folder at (theTargetFolder as alias) with properties {name:newFolderName, owner privileges:read write, group privileges:read write, everyones privileges:read write} 
end tell 

Pour déplacer un fichier, tout ce que vous avez besoin est cela. ..

tell application "Finder" 
    set fileMoved to move theTargetFile to theTargetFolder 
end tell 

Pour renommer un fichier, utilisez quelque chose comme ce qui suit ...

set theFileToRename to theTargetFilePath as alias -- alias is important here 
set name of theFileToRename to theFileName 

Je suggère de créer d'abord une liste de tous les fichiers cibles, puis pour chaque fichier de la liste, créez les dossiers en fonction de leur nom, déplacez le fichier et finalement le renommer une fois qu'il est dans son emplacement final.

Ajouter le sel au goût.