SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: agatha en Viernes 29 de Julio de 2005, 10:39

Título: Eliminar El Contenido De Un Directorio
Publicado por: agatha en Viernes 29 de Julio de 2005, 10:39
¡Hola a tod@s!
     Me gustaria saber como puedo eliminar el contenido de un directorio, pero sin borrar éste. Lo que se me ha ocurrido es hacerlo mediante un bucle while y borrando fichero a fichero (con DeleteFile) ¿sabéis otra forma mejor?
    Muchas gracias       :comp:
Título: Re: Eliminar El Contenido De Un Directorio
Publicado por: Eternal Idol en Viernes 29 de Julio de 2005, 12:21
Podes usar la funcion SHFileOperation, aca te dejo un ejemplo, en la MSDN podes encontrar todas las constantes. En este caso mandamos todo el directorio a la papelera de reciclaje sin que se entere el usuario.

El parametro seria de este formato c:\dir\dir2\*

Código: Text
  1.  
  2. #include <shellapi.h>
  3.  
  4. void sendToRecycleBin(char *Folder)
  5. {
  6.   SHFILEOPSTRUCT erase;
  7.   ZeroMemory(&erase, sizeof(SHFILEOPSTRUCT));
  8.   erase.wFunc = FO_DELETE;
  9.   erase.pFrom = Folder;
  10.   erase.fFlags = FOF_ALLOWUNDO | FOF_NORECURSION | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT;
  11.   SHFileOperation(&erase);
  12. }
  13.  
  14.  

 :smartass:  :comp:  :ph34r:
Título: Re: Eliminar El Contenido De Un Directorio
Publicado por: juanma en Viernes 29 de Julio de 2005, 12:45
Espero que no se ofenda Eternal Ido| por responder a lo que ya ha respondido perfectamente.

Simplemente poner otro punto de vista, eviedentemente, en este ejemplo Windows pide la confimación.

{
  String cFd = InputBox("Borrar", "Eliminar ficheros de la Carpeta:", "C:\\Temp");
  if (cFd.Length()>2) {
    cFd += "\\*.*";
    char sfd[MAX_PATH];
    memset( sfd, 0, sizeof(sfd));
    lstrcpyn( sfd, cFd.c_str(), sizeof(sfd));

    SHFILEOPSTRUCT op;
    memset(&op, 0, sizeof(op));
    op.hwnd = Handle;
    op.wFunc =FO_DELETE;
    op.pFrom = sfd;
    op.fFlags= FOF_ALLOWUNDO;
    SHFileOperation( &op);
    }
}
Título: Re: Eliminar El Contenido De Un Directorio
Publicado por: Eternal Idol en Viernes 29 de Julio de 2005, 13:03
Cita de: "juanma"
Espero que no se ofenda Eternal Ido| por responder a lo que ya ha respondido perfectamente.
No te preocupes, yo no me ofendo, aunque a cualquiera le puede parecer que es casi spam, especialmente viniendo de un usuario nuevo.

 :comp:
Título: Re: Eliminar El Contenido De Un Directorio
Publicado por: agatha en Viernes 29 de Julio de 2005, 17:32
Muchas gracias a los dos por vuestra ayuda, y en especial a Eternal Idol, que siempre contesta mis preguntas con una rapidez asombrosa.  :P
Título: Re: Eliminar El Contenido De Un Directorio
Publicado por: Eternal Idol en Viernes 29 de Julio de 2005, 17:36
Cita de: "agatha"
Muchas gracias a los dos por vuestra ayuda, y en especial a Eternal Idol, que siempre contesta mis preguntas con una rapidez asombrosa.  :P
De nadas, para eso estamos  :smartass: