C/Visual C - REVISAR RECURSIVAMENTE UN DIRECTORIO

 
Vista:

REVISAR RECURSIVAMENTE UN DIRECTORIO

Publicado por M (15 intervenciones) el 23/06/2001 17:36:29
HOLA:
Gracias por leer esta nota.
Les consulto por que tengo el siguiente código:

HANDLE pepe;
WIN32_FIND_DATA dato;
char C[200];

GetSystemDirectory(C,sizeof(C));

dato.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY;

pepe=FindFirstFile("C:\\masm32\\*",&dato);

if (pepe==INVALID_HANDLE_VALUE)
{
MessageBox("FALLO","SKLSKFJ",MB_OK);
return;
}

while (GetLastError()!=ERROR_NO_MORE_FILES)
{
if(FindNextFile(pepe,&dato)==0)
break;
MessageBox(dato.cFileName,"ARCHIVO",MB_OK);
}

Pero, me devuelve e nombre de los subdirectorios, en caso de aberlos, no los archivos que contiene. Para esto tengo que verificar si es un subdirectorio y si lo es, debo buscar sus archivos y subcarpetas y asi..., cómo puedo modificar este código para que sirvaen esta búsqueda recursiva de TODOS los archivos de las carpetas y subcarpetas?
MIL GRACIAS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:REVISAR RECURSIVAMENTE UN DIRECTORIO

Publicado por Bleach (29 intervenciones) el 25/06/2001 10:16:14

Tienes primero que hacer una busqueda para saber que subdirectorios tienes, y en caso de HABERLOS, tienes que hacer
una busqueda en cada directorio de los ficheros que hay en ese directorio, recuerda que haces
dato.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY; con esto le dices que te diga los directorios, no que te busque los
ficheros de cada directorio.

Otra opcion es hacer una funcion que le pases como parametro el directorio en el que buscar, lo que hace esta funcion es
buscar cualquier tipo de fichero, sea directorio o no y si es un directorio, que se llame a si misma concatenando el
subdirectorio encontrado con el que le has pasado.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:REVISAR RECURSIVAMENTE UN DIRECTORIO

Publicado por M (15 intervenciones) el 25/06/2001 14:11:58
El punto es que hice una función qu e detecta subrirectorios, pero no sé como hacer una 'segunda pasada' para obtener los subrirectorios de los subdirectorios, y de haberlos, no sé como hacer la siguiente pasada y así hasta que se me terminen los subrirectorios.

GRACIAS POR TU RESPUESTA
PD:
acá hay una copia del código.

ObtenerARbyCString(CString cadena)
{
HANDLE pepe;
WIN32_FIND_DATA dato;
dato.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY;
unsigned long int A=0,D=0; //A :> para Arcihvos; D :> para Directorios
CStringArray Lista;
CString ruta;

ruta =cadena + "*";

pepe=FindFirstFile(ruta,&dato);

if (pepe==INVALID_HANDLE_VALUE)
{
MessageBox("FALLO","SKLSKFJ",MB_OK);
return;
}

if(FindNextFile(pepe,&dato)==0)
return;

while (GetLastError()!=ERROR_NO_MORE_FILES)
{
if(FindNextFile(pepe,&dato)==0)
break;
if(dato.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
CString codo;
++D;
MessageBox(\
dato.cFileName, "DIRECTORIO",MB_OK);
codo=ruta;
codo+=dato.cFileName;
codo+="\\";
Lista.Add(codo);
}
else
{
MessageBox(\
dato.cFileName,"ARCHIVO",MB_OK);
++A;
}
}

for(int x=0;x<D;x++)
{
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar