Skip to main content
Inspiring
Jul 27, 2006 1:59 PM UTC
Question

Delete All FIles In A Folder

Hello,

I am would like to use cffile to delete all files in a directory every night to clean up pdf files that were created during the day. Is there a way to delete all files with naming each one? What would go in the file path?

<cffile action = "delete" file = "full_path_name">

Gary
    This topic is closed to new replies. Start a new post to keep the conversation going.

    4 replies

    Inspiring
    Jul 27, 2006 6:19 PM UTC
    It may be easier to just delete the directory using <cfdirectory action="delete" directory="dir_name" />

    Then create a new empty one with the same name right afterwards.

    good luck,
    Mike
    Translate
    Inspiring
    Oct 31, 2019 3:36 PM UTC

    ...13 years later...

    I like Mike's solution, but sometimes the directory functions are weird in that after you delete, then createa  new one, it throws an error saying that hte directory already exists. Even after checking for existence.

    FWIW, I'm using directoryExists(), directoryDelete(), and directoryCreate(), rather than <cfdirectory>.

    Translate
    BKBK
    Community Expert
    Community Expert
    Nov 2, 2019 10:31 AM UTC

    Myka wrote:

    ... sometimes the directory functions are weird in that after you delete, then createa  new one, it throws an error saying that hte directory already exists. Even after checking for existence.

     

    Myka, there may be a good reason why it is impossible to "delete, then create" a directory or file within the same request. Namely, the thread to delete the directory or file may still be active when ColdFusion runs the function to create.

    The usual solution is to use a named lock to separate the delete and create operations:

    <cflock name="abc123">

        <!--- delete operation --->

    </cflock> 

    <cflock name="abc123">

        <!--- create operation --->

    </cflock> 

    Translate
    Inspiring
    Jul 27, 2006 3:36 PM UTC
    You can use cfdirectory to get a name of the files in the directory. Something like:

    <cfset myDir = "c:\PDFs\" />
    <cfdirectory action="list" name="qDir" directory="#myDir#" />
    <cfloop query="qDir">
    <cfif qDir.type IS "file" >
    <cffile action="delete" file="#myDir##qDir.name#" />
    </cfif>
    </cfloop>
    Translate