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 に答える