As Steve said, you need a loop two or better a function to do the fileMove action.
Note
- The logic is just a POC. You can refine it to a better one.
I have tried this code on CF10. It must work Okay on Open DB too.
<cfprocessingdirective pageencoding="UTF-8"> <cfscript> oDirectoryPath = "D:/test_cf/"; //original Directory path files = DirectoryList(oDirectoryPath, false, 'name', '*.*'); filecount = Arraylen(files); filePerFolder = 3; numfoldersToCreate = Ceiling(filecount/filePerFolder); function moveFilesToThisDirectory(dir,index){ var beginAt = 1; var endAt = begin + 2; var newDir = ARGUMENTS.dir; beginAt = ARGUMENTS.index; if(beginAt neq 1){ endAt = index * VARIABLES.filePerFolder; beginAt = endAt - (VARIABLES.filePerFolder - 1); if(endAt GT VARIABLES.fileCount){ endAt = VARIABLES.fileCount; } } while(beginAt LTE endAt){ FileMove(oDirectoryPath & '\' & files[beginAt], newDir & '\' & files[beginAt]); beginAt = beginAt + 1; } } </cfscript> <cfif directoryExists(oDirectoryPath)> <cfdirectory action="list" directory="#oDirectoryPath#" name="directories" recurse="true" type="dir" /> <cfloop query="directories"> <cfdirectory action="delete" directory="#oDirectoryPath#/#directories.name#" recurse="yes"> </cfloop> </cfif> <cfscript> i = 1; while(i LTE numfoldersToCreate){ newDirectoryName = "#oDirectoryPath#newfolder#i#"; DirectoryCreate(newDirectoryName); moveFilesToThisDirectory(dir:newDirectoryName,index:i ); i = i + 1; } switch(numfoldersToCreate){ case 0: WriteOutput(' No folder created'); break; case 1: WriteOutput(' 1 folder created'); break; default: WriteOutput(numfoldersToCreate & ' folders created'); } </cfscript>