Mensaje    Asunto: Borrar un directorio Responder citando

para borrar todo un directorio aun con informacion dentro existe la siguiente funcion, la he probado y funciona de manera correcta para Windows

incluir las siguientes cabeceras

Código:
#include <io.h>
#include <dos.h>


Código:
//-------------
BOOL IsDots(const TCHAR* str) {
   if(_tcscmp(str,".") && _tcscmp(str,"..")) return FALSE;
   return TRUE;
}

BOOL DeleteDirectory(const TCHAR* sPath) {
   HANDLE hFind;    // Handel del Archivo
   WIN32_FIND_DATA FindFileData;

   TCHAR DirPath[MAX_PATH];
   TCHAR FileName[MAX_PATH];

   _tcscpy(DirPath,sPath);
   _tcscat(DirPath,"\\*");    // Buscar todos los Archivos
   _tcscpy(FileName,sPath);
   _tcscat(FileName,"\\");

   // Buscar el Primer Archivos
   hFind = FindFirstFile(DirPath,&FindFileData);
   if(hFind == INVALID_HANDLE_VALUE) return FALSE;
   _tcscpy(DirPath,FileName);

   bool bSearch = true;
   while(bSearch) {    // Mientras que encontramos una entrada
      if(FindNextFile(hFind,&FindFileData)) {
         if(IsDots(FindFileData.cFileName)) continue;
         _tcscat(FileName,FindFileData.cFileName);
         if((FindFileData.dwFileAttributes &
            FILE_ATTRIBUTE_DIRECTORY)) {

            // si encontramos un recurso tipo directorio
            if(!DeleteDirectory(FileName)) {
                FindClose(hFind);
                return FALSE;    // El direcotorio no pude ser borrado
            }
            // Se remueve el directorio Vacio
            RemoveDirectory(FileName);
             _tcscpy(FileName,DirPath);
         }
         else {
            if(FindFileData.dwFileAttributes &
               FILE_ATTRIBUTE_READONLY)
               // Cambiamos el mode solo lectura
                  _rtl_chmod(FileName, FA_RDONLY);
                  if(!DeleteFile(FileName)) {    // Borramos el Archivo
                    FindClose(hFind);
                    return FALSE;
               }
               _tcscpy(FileName,DirPath);
         }
      }
      else {
         // Si No hay Mas Archivos
         if(GetLastError() == ERROR_NO_MORE_FILES)
         bSearch = false;
         else {
               FindClose(hFind);
               return FALSE;
         }
      }
   }
   FindClose(hFind);                  // Cerramos el Handle del Archivo
   return RemoveDirectory(sPath);     // Removemos el directorio ya Vacio
}


y para usarla, podemos hacerlo de la siguiente manera

Código:
AnsiString directorio = "c:\\Windows"
DeleteDirectory(directorio);


por favor cambiar el directorio a borrar, no me hago responsable que falle el sistema operativo, la segunda vez que arranca

obiamente, no lo van hacer verdad!!

Saludos...
_________________
Cool