La Web del Programador: Comunidad de Programadores
 
    Pregunta:  729 - BUSCAR EN EL DISCO DURO
Autor:  Sergio Quintero Rojas
Quisiera saber como puedo hacer para rebisar en todo el disco duro incluyendo subcarpetas un fichero con una extencion especifica, lo que quiero es algo parecido al Find que trae incorporado W95, ademas quisiera saber como puedo extraer la version, nombre, shareware, es decir las propiedades de un fichero ejecutable. Lo anteriormente mencionado lo deseo hacer en Borland C++ 3.0 para D.O.S.. Muchas gracias

  Respuesta:  maelpomene zeus
No hagas caso a los demas. Hacer una ventana de DOS y un DIR para saberlo es una guarrada. Utiliza las funciones que te digo, existentes desde las primeras versiones de Turbo C y antes:

findfirst
busca el primer fichero que coincida con las especificaciones que le des
findnext
busca todos los siguientes ficheros que coincidan con esas especificaciones, uno por cada llamada

Busca los parámetros en la ayuda de Borland C. Si se lo especificas, te buscará archivos de sistema, ocultos, archivados, directorios, etc.

Lo de la versión y si es shareware es absurdo, no existen funciones para eso en DOS, porque está almacenado internamente en cada programa y éstos no tienen porqué tener parámetros para facilitarlos. Puedes imaginarte la versión por el tamaño y la fecha, pero eso es adivinarlo, no saberlo realmente.

  Respuesta:  Richard Mac
Hay un pequeño dilema en esto, el C fue hecho para UNIX en donde los directorios se tratan como archivos "fopen", pero en DOS no funciona.
Pero por suerte, tenemos la funciones de dir.h y dirent.h que son:

struct dirent{
d_name[13];
bla bla bla
};

DIR *opendir("nombre dir");

struct dirent *readdir(DIR *apuntadordir);

closedir(DIR *apuntadordir);

si usas midirent=readdir(miapundir);
midirent->d_name es un puntero al nombre de arch. o direct. y lo podrías ver por ej:
printf("%s",midirent->d_name);

  Respuesta:  Fidel Portilla M.
Bueno, yo creo que si estas en el entorno de DOS., es probable hacer un "RUN" desde tu aplicacion o ejecutar una llamada a un comando de DOS. y con el DIR, de DOS., se puede buscar un archivo en todo tu disco duro y mandar el resultado a un archivo ASCII. Ej.:
"C:\>DIR *.EXE /S > NOMBRE.TXT" te mandará todos los archivos que tengan extención "EXE" al archivo de texto "NOMBRE.TXT", así como el "PATH" en el disco, solo hace falta saber que vas a leer en tu archivo ASCII y asignar el resultado a una variable. Lo de la versión y el tipo de software eso no tengo idea. Si requieres de más información enviame un e-mail.

  Respuesta:  Carlos Fernandez
bueno la respuesta anterior esta superbuena pero hay veces que los archivos estan ocultos no es necesario que esten en el path de dos en el autoexec.bat pero puedes hacer un dir asi c:\dir nombre_del_archvio.extencion /a/s este buscara si esta escondido y en todos los direcctorios si hay muchos pues pon un /p para que se detenga ok y si quieres un reporte en un texto usa ">" para mas ayuda usa el help del MSO-dos