C/Visual C - c

 
Vista:

c

Publicado por albert (1 intervención) el 26/08/2003 22:41:28
Necesito un programa que simule un arbol en MS-DOS.
El programa entrar a ms dos y deesde ahi empezar a accesar a los archivos que se tienen en la unidad C.

Sin mas que agregar, agradesco su apoyo.
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
Imágen de perfil de Alejandro

Cómo simular un árbol de directorios en MS-DOS

Publicado por Alejandro (1286 intervenciones) el 23/07/2025 22:33:13
Hola Albert,

Para simular un árbol de directorios en MS-DOS, puedes crear un programa en C que recorra recursivamente los directorios de la unidad C: y muestre su estructura en forma de árbol, similar al comando `tree` en MS-DOS.

Aquí te dejo un ejemplo sencillo en C que hace eso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
#include <unistd.h>
 
void mostrarArbol(const char *directorio, int nivel) {
    DIR *dir;
    struct dirent *entrada;
    struct stat info;
    char ruta[1024];
 
    dir = opendir(directorio);
    if (dir == NULL) {
        printf("%*s[Error al abrir %s]\n", nivel * 4, "", directorio);
        return;
    }
 
    while ((entrada = readdir(dir)) != NULL) {
        // Saltar "." y ".."
        if (strcmp(entrada->d_name, ".") == 0 || strcmp(entrada->d_name, "..") == 0)
            continue;
 
        // Construir la ruta completa
        snprintf(ruta, sizeof(ruta), "%s\\%s", directorio, entrada->d_name);
        stat(ruta, &info);
 
        // Mostrar con indentación
        printf("%*s|- %s\n", nivel * 4, "", entrada->d_name);
 
        // Si es directorio, hacer llamada recursiva
        if (S_ISDIR(info.st_mode)) {
            mostrarArbol(ruta, nivel + 1);
        }
    }
    closedir(dir);
}
 
int main() {
    printf("Árbol de directorios en C:\\\n");
    mostrarArbol("C:\\", 0);
    return 0;
}

Notas importantes:
- Este código funciona en sistemas POSIX (Linux, etc.) y en Windows con MinGW o Cygwin. Para Windows puro, deberías usar funciones específicas como `FindFirstFile` y `FindNextFile`.
- En MS-DOS, el acceso a directorios y archivos es diferente y más limitado. Para MS-DOS, tendrías que usar funciones de la API de DOS o escribir en ensamblador, o simplemente usar el comando `tree` que ya viene en MS-DOS.

Alternativa sencilla en MS-DOS:
- Solo escribe en la consola:
1
tree C: /F
Esto mostrará toda la estructura de directorios y archivos en la unidad C: en forma de árbol.
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