Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Escanear carpeta entera.. anda mal :S

Estas en el tema de Escanear carpeta entera.. anda mal :S en el foro de C/C++ en Foros del Web. Hola, Estoy intentando hacer un codigo que me liste todos los archivos y carpetas ( y los archivos de las carpetas ) de una carpeta. ...
  #1 (permalink)  
Antiguo 09/11/2009, 18:41
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Escanear carpeta entera.. anda mal :S

Hola,
Estoy intentando hacer un codigo que me liste todos los archivos y carpetas ( y los archivos de las carpetas ) de una carpeta.
Es decir, si quiero escanear C:\Prueba y en Prueba tengo otra carpeta que se llama Prueba2 que me liste los archivos de esa carpeta tambien. Este es mi codigo:
Código c++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. #include <windows.h>
  4. #include <cstdio>
  5. using namespace std;
  6. void directorioDatos(char dir[], char formato[]){
  7.     WIN32_FIND_DATA wFindData;
  8.     HANDLE hFile;
  9.     BOOL NextFile = TRUE;  
  10.     char temp[100]="";
  11.     sprintf(temp, "C:\\Prueba\\%s*.%s", dir, formato);
  12.     hFile = FindFirstFile( temp, &wFindData );
  13.     if( hFile != INVALID_HANDLE_VALUE ) {
  14.         while( NextFile ) {
  15.             if( wFindData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) {
  16.                 sprintf(temp, "%s", wFindData.cFileName);
  17.                 if(temp!="."&&temp!=".."){
  18.                     sprintf(temp, "%s%s\\", dir, wFindData.cFileName);
  19.                     cout<<"CARPETA: C:\\Prueba\\"<<temp<<"\n";
  20.                     directorioDatos(temp,formato); // Escaneamos los archivos
  21.                 }
  22.             }else{
  23.                 cout<<"ARCHIVO: C:\\Prueba\\"<<dir<<wFindData.cFileName<<"\n";
  24.             }
  25.             NextFile = FindNextFile( hFile, &wFindData );
  26.         }
  27.     }
  28.    
  29.     CloseHandle( hFile );
  30. }
  31. int main(int argc, char *argv[]) {
  32.     char dir[100]="",fomato[100]="*";
  33.     directorioDatos(dir,fomato);
  34.     return 0;
  35. }
Gracias
Salu2
__________________
Half Music - www.halfmusic.com
  #2 (permalink)  
Antiguo 09/11/2009, 20:24
Avatar de MaTyS  
Fecha de Ingreso: enero-2009
Ubicación: Mar del Plata
Mensajes: 220
Antigüedad: 15 años, 3 meses
Puntos: 18
Respuesta: Escanear carpeta entera.. anda mal :S

Para lograr eso tenes que comer mas atun (?) No mentira :P.
Mira te recomiendo utilizar "dir.h", porque "findfirst" no es muy bueno para estos casos, cuando queres obtener resultados tan simples.

Nos vemos :D
  #3 (permalink)  
Antiguo 09/11/2009, 21:03
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Respuesta: Escanear carpeta entera.. anda mal :S

Bueno.. ya lo hice andar.
Cambie:
Código c++:
Ver original
  1. #
  2.                     sprintf(temp, "%s%s\\", dir, wFindData.cFileName);
por:
Código c++:
Ver original
  1. #
  2.                     sprintf(temp, "%s%s", dir, wFindData.cFileName);
y
Código c++:
Ver original
  1. #
  2.     sprintf(temp, "C:\\Prueba\\%s*.%s", dir, formato);
por:
Código c++:
Ver original
  1. #
  2.     sprintf(temp, "C:\\Prueba\\%s\\*.%s", dir, formato);
Gracias igual! :P
Salu2
__________________
Half Music - www.halfmusic.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:08.