0

我对此相当陌生,尽管在过去几周内设法创建了几个基本脚本,但我似乎无法围绕这个:

  1. 选择文件夹(比如 1000 个文件)
  2. 输入每个文件夹的文件数(比如 100)
  3. 然后脚本创建 10 个文件夹(每个文件夹 1000 个文件 / 100 个)
  4. 然后该脚本将前 100 个文件按顺序移动到第一个文件夹中 - 重复直到完成。

到目前为止,我为这个过程编写的脚本令人沮丧、草率和彻头彻尾的可悲,所以我不敢在这里分享它们。

我的实验还导致项目列表导致按顺序移动文件的问题。代替: ValOne_1.wav ValOne_2.wav ValOne_3.wav ValOne_4.wav ValOne_5.wav

我得到: ValOne_1.wav ValOne_10.wav ValOne_100.wav ValOne_101.wav ValOne_102.wav

谢谢

4

1 回答 1

2

Finder 有一个“排序”命令,因此您可以使用它来避免您提到的编号问题。它似乎按照您期望的方式对它们进行排序。因此,通过一些巧妙的编码,您的工作流程变得容易。试试下面的。您只需要调整脚本中的前 2 个变量以满足您的需要,脚本的其余部分应该可以正常工作。

set filesPerFolder to 3
set newFolderBaseName to "StorageFolder_"

set chosenFolder to (choose folder) as text

tell application "Finder"
    -- get the files from the chosen folder and sort them properly
    set theFiles to files of folder chosenFolder
    set sortedFilesList to sort theFiles by name

    set theCounter to 1
    repeat
        -- calculate the list of files to move
        -- also remove those files from the sortedFilesList
        if (count of sortedFilesList) is greater than filesPerFolder then
            set moveList to items 1 thru filesPerFolder of sortedFilesList
            set sortedFilesList to items (filesPerFolder + 1) thru end of sortedFilesList
        else
            set moveList to sortedFilesList
            set sortedFilesList to {}
        end if

        -- calculate the new folder information and make it
        set newFolderName to newFolderBaseName & theCounter as text
        set newFolderPath to chosenFolder & newFolderName
        if not (exists folder newFolderPath) then
            make new folder at folder chosenFolder with properties {name:newFolderName}
        end if

        -- move the moveList files
        move moveList to folder newFolderPath

        if sortedFilesList is {} then exit repeat
        set theCounter to theCounter + 1
    end repeat
end tell
于 2013-09-04T14:20:55.617 回答