Empty Directory Utility Under NT

Environment: Tested on Windows NT (SP5) with Visual C++ 6 (SP4)


What is it ?

A "Del [Path\]*.*" /sxyz" NT utility.


I had to write a "Empty Directory" utility on WIN NT, without using Shell. So I wrote this function. I think it can be usefull for programmers who don't have time to learn Files under NT.
This is a recursive function which delete all the directories and files inside the directory sent as a parameter (sPath). The Parameter 'sPath' has to be a full path name without "\\" at the end.
So is it !

Attention !

With this call, you can empty every directory also important one. I am not responsible for deleting important data with my Code !

Return Value:

TRUE if the directory exists,
FALSE if it not.


// Include this line before your code where you call 
// this function !
BOOL EmptyDirectory(CString &sPath);

// This is a recursive function which empty a directory path 
// of its files and call itself if necessary to delete
// subdirectories.
BOOL EmptyDirectory(CString &sPath)
 CFileFind finder;

 CString  sWildCard = sPath + "\\*.*";

 BOOL bFound;
 BOOL bWorking = finder.FindFile(sWildCard);

 bFound = bWorking;

 while (bWorking) 
  bWorking = finder.FindNextFile();

  if (finder.IsDots()) continue;

  if (finder.IsDirectory()) 
   CString s = finder.GetFilePath();
  _unlink( finder.GetFilePath() );


 return bFound;


  • Thanks

    Posted by Legacy on 08/06/2003 12:00am

    Originally posted by: vijay


  • Just a small helpful addition...

    Posted by Legacy on 04/22/2003 12:00am

    Originally posted by: Eyes`Only


    If you add the line...


    ... right before your line ...

    CString sWildCard = sPath + "\\*.*";

    ... you effectively remove the requirement "The Parameter 'sPath' has to be a full path name without "\\" at the end."

    Just in case anyone wants to errorproof their code the easy way :)


  • you just won the first place! congrats.

    Posted by Legacy on 04/13/2003 12:00am

    Originally posted by: Stan

    Could it be any more trivial? Your article just won the first place in our yearly "10 most trivial pieces of code" competition.

  • Great

    Posted by Legacy on 03/12/2003 12:00am

    Originally posted by: Anuo

    Oh yeah! I just like this.

  • Big thanks from a total beginner

    Posted by Legacy on 11/16/2002 12:00am

    Originally posted by: bodozer

    Thanks for the code.
    I found it very useable for my project.
    I'm totally new in VC++.
    I used BC++ (for DOS) 10-15 years ago.

    regards bodozer,

  • read only directory

    Posted by Legacy on 09/09/2002 12:00am

    Originally posted by: brownbro

    What if the directory is read only ? I've had challenges in the past with RemoveDirectory() returning an error when the directory is read only.

  • NON-MFC Version

    Posted by Legacy on 07/18/2002 12:00am

    Originally posted by: J.T. Gilkeson

    Here's the NON-MFC version:

    // This is a recursive function which empty a directory path
    // of its files and call itself if necessary to delete
    // subdirectories.
    BOOL EmptyDirectory(LPCSTR lpFolder)
    WIN32_FIND_DATA ff;
    char absPath[MAX_PATH];
    char lpDeleteFolder[MAX_PATH];

    strcpy(lpDeleteFolder, lpFolder);
    strcat(lpDeleteFolder, "\\*.*");

    HANDLE hFile = FindFirstFile(lpDeleteFolder, &ff);
    BOOL bWorking = (INVALID_HANDLE_VALUE != hFile);
    BOOL bFound = bWorking;

    while (bWorking)
    strcpy(absPath, lpFolder);
    strcat(absPath, "\\");
    strcat(absPath, ff.cFileName);

    if ((0 == strcmp(ff.cFileName, ".")) || (0 == strcmp(ff.cFileName, "..")))
    else if (ff.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    // RECURSIVE CASE: Call with subdirectory

    bWorking = FindNextFile(hFile, &ff);

    //BASE CASE: No more subdirs

    return bFound;


    Posted by Legacy on 03/10/2002 12:00am

    Originally posted by: Dian Suharto

    Simple, nice and working code.


    Dian Suharto

  • great code

    Posted by Legacy on 02/19/2002 12:00am

    Originally posted by: anand

    great code.It simplified my work

  • Great for beginners

    Posted by Legacy on 02/11/2002 12:00am

    Originally posted by: Chris Hunter

    I am just beginning Visual C++ programming. I found this article and it looks to be extremely helpful. I just wanted to say thanks.

  • Loading, Please Wait ...

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Power and Automation Equipment makers face constrained CAPEX, equipment interoperability issues, and process inefficiencies. However, they can take advantage of secure Internet of Things (IoT) intelligent devices and systems to make better business decisions around asset utilization and performance, while simultaneously optimizing equipment interoperability and services efficiency. Watch this brief video to see how you can unlock the full potential of your assets and value chain.

  • On-demand Event Event Date: September 23, 2015 The cloud is not just about a runtime platform for your projects – now, you can do your development in the cloud, too. Check out this webcast to learn how the cloud improves your development experience and team collaboration. Join Dana Singleterry, Principal Product Manager for Oracle Dev Tools, as he discusses how to simplify every aspect of the development lifecycle, including requirements gathering, version management, code reviews, build automation, and …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date