استخدم Automator و Applescript لنقل الملفات إلى المجلدات بناءً على اسم الملف
-
28-09-2019 - |
سؤال
لدي مجلد يحتوي على الملفات التالية:
Elephant.19864.archive.other.pdf
Elephant.17334.other.something.pdf
Turnip.19864.something.knight.pdf
Camera.22378.nothing.elf.pdf
أريد نقل هذه الملفات إلى الهيكل التالي
Archive
Elephant
Elephant.19864.pdf
Elephant.17334.pdf
Turnip
Turnip.19864.pdf
Camera.HighRes
Camera.HighRes.22378.pdf
تتكون الملفات التي تم إنشاؤها من كلمة أو كلمات متعددة ، تليها سلسلة من الرقم ، تليها كلمات أخرى ثم الامتداد. أرغب في نقلها إلى مجلد يسمى الكلمة أو الكلمات قبل الأرقام ، وإزالة جميع الكلمات بين الأرقام والتمديد (.pdf في هذه الحالة).
إذا لم يكن المجلد موجودًا ، فيجب علي إنشائه.
اعتقدت أن هذا سيكون بسيطًا جدًا باستخدام Automator أو Applescript ، لكن لا يبدو أنني قادر على الحصول على رأسي حوله.
هل هذا سهل باستخدام Automator/Applescript إذا كان الأمر كذلك ، فماذا يجب أن أنظر إليه
المحلول
إنه أمر سهل ، إنه ليس واضحًا في البداية. بعض الأشياء لتبدأ.
لتحليل أسماء الملفات للحصول على أسماء المجلد ، تحتاج إلى فصل الاسم إلى قائمة ...
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"}
تحتوي القائمة على فهرس 1 ، لذلك البند 1 هو "Elephant" والبند 5 هو "PDF". لتهدئة اسم الملف معًا ، كل ما تحتاجه هو هذا
set theFileName to (item 1 of fileNameComponents & item 2 of fileNameComponents & item 5 of fileNameComponents) as string
لإنشاء مجلد ، فقط استخدم ما يلي ...
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
لنقل ملف ، كل ما تحتاجه هو هذا ...
tell application "Finder"
set fileMoved to move theTargetFile to theTargetFolder
end tell
لإعادة تسمية ملف ، استخدم شيئًا مثل ما يلي ...
set theFileToRename to theTargetFilePath as alias -- alias is important here
set name of theFileToRename to theFileName
أقترح أولاً إنشاء قائمة بجميع الملفات المستهدفة ، ثم لكل ملف في القائمة ، قم بإنشاء المجلدات بناءً على اسمها ، ونقل الملف ، وأخيراً إعادة تسميته بمجرد أن يكون في موقعه النهائي.
أضف الملح حسب الذوق.