0

約 1000 のサブフォルダーを含む "Directory" というフォルダーがあります。各サブフォルダー ("Student") には、1 つまたは複数のファイルを含む 1 つまたは複数のサブフォルダーが含まれています。次のスクリプトを作成することは可能ですか。

  • サブフォルダーに 1 つまたは複数のサブフォルダーがあるかどうかを検出します
  • 「Student」にサブフォルダーが 1 つしかない場合は、親ディレクトリの「Bad」という新しいフォルダーに移動します。
  • 「Student」に複数のサブフォルダーがある場合は、親ディレクトリの「Good」という新しいフォルダーに移動します

明らかに、結果として、"Directory" フォルダーには 2 つのフォルダーが必要です。1 つのフォルダーを含むすべてのフォルダーを含む "Bad" という名前のフォルダーと、複数のフォルダーを含むすべてのフォルダーを含む "Good" という名前のフォルダーです。言い換えれば、分類法を次のようにしたいと考えています。

/Directory/Billy/Grades
/Directory/Billy/Student_Info
/Directory/Bob/Grades
/Directory/Bob/Student_Info  
/Directory/Joe/Student_Info
/Directory/George/Grades

に:

/Directory/Good/Billy/Grades
/Directory/Good/Billy/Student_Info
/Directory/Good/Bob/Grades
/Directory/Good/Bob/Student_Info
/Directory/Bad/Joe/Student_Info
/Directory/Bad/George/Grades
4

1 に答える 1

3

これは前もって言っておきますが、将来使用できるいくつかの中核となる Finder と AppleScripting のアイデアを使用しています。

万が一に備えて、まずデータのバックアップを作成してください。

tell application "Finder"
    -- Define the full path to your data
    set student_data_folder to folder POSIX file "/Users/Foo/Desktop/bar/students/data"

    -- Get the student folders, ignoring good & bad incase they have already been created
    set all_student_folders to every folder of student_data_folder whose name is not in {"Good", "Bad"}

    --Create the good & bad folders if they don't exist
    set good_folder to my checkFolderExists("Good", student_data_folder)
    set bad_folder to my checkFolderExists("Bad", student_data_folder)

    -- Now loop through all student folders doing the sort based on how many subfolders they have
    repeat with student_folder in all_student_folders
        if (get the (count of folders in student_folder) > 1) then
            -- Its good
            move student_folder to good_folder
        else
            -- It's bad
            move student_folder to bad_folder
        end if
    end repeat

end tell

on checkFolderExists(fname, host_folder)
    tell application "Finder"
        if not (exists folder fname of host_folder) then
            return make new folder at host_folder with properties {name:fname}
        else
            return folder fname of host_folder
        end if
    end tell
end checkFolderExists

HTH

于 2013-08-21T01:00:57.553 に答える