C/Visual C - Fecha y hora de directorios

 
Vista:

Fecha y hora de directorios

Publicado por Wences (2 intervenciones) el 06/06/2001 01:40:40
¿ Como puedo saber la fecha de creacion de un directorio y/o modificarla desde C en Windows ?. Con los ficheros es facil, pero no he encontrado nada equivalente para los directorios (he probado a abrirlos como ficheros pero no sirve
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

Obtener y modificar la fecha de creación de un directorio en Windows

Publicado por Alejandro (913 intervenciones) el 26/09/2024 16:39:15
Wences, para obtener la fecha de creación de un directorio en Windows utilizando C/Visual C, puedes utilizar la función `GetFileAttributesEx` de la API de Windows. Aquí tienes un ejemplo de cómo hacerlo:

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
#include <stdio.h>
#include <windows.h>
 
int main() {
    const char* directorio = "C:\\ruta\\al\\directorio";
 
    FILETIME ftCreacion;
    WIN32_FILE_ATTRIBUTE_DATA atributos;
 
    if (GetFileAttributesEx(directorio, GetFileExInfoStandard, &atributos)) {
        ftCreacion = atributos.ftCreationTime;
 
        // Convertir la fecha y hora a formato legible
        SYSTEMTIME stCreacion;
        FileTimeToSystemTime(&ftCreacion, &stCreacion);
 
        printf("Fecha de creación del directorio: %02d/%02d/%d %02d:%02d:%02d\n",
            stCreacion.wDay, stCreacion.wMonth, stCreacion.wYear,
            stCreacion.wHour, stCreacion.wMinute, stCreacion.wSecond);
    } else {
        printf("Error al obtener los atributos del directorio.\n");
    }
 
    return 0;
}

Para modificar la fecha de creación de un directorio desde C en Windows, no hay una función directa en la API de Windows para hacerlo. Sin embargo, puedes lograrlo utilizando la función `SetFileTime` junto con la función `CreateFile` para abrir el directorio como un archivo. Aquí tienes un ejemplo de cómo hacerlo:

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
#include <stdio.h>
#include <windows.h>
 
int main() {
    const char* directorio = "C:\\ruta\\al\\directorio";
 
    HANDLE hDirectorio = CreateFile(directorio, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
    if (hDirectorio != INVALID_HANDLE_VALUE) {
        FILETIME ftCreacion;
        SYSTEMTIME stCreacion;
 
        // Obtener la fecha y hora actual
        GetSystemTime(&stCreacion);
        SystemTimeToFileTime(&stCreacion, &ftCreacion);
 
        // Modificar la fecha de creación del directorio
        if (SetFileTime(hDirectorio, &ftCreacion, NULL, NULL)) {
            printf("Fecha de creación del directorio modificada con éxito.\n");
        } else {
            printf("Error al modificar la fecha de creación del directorio.\n");
        }
 
        CloseHandle(hDirectorio);
    } else {
        printf("Error al abrir el directorio.\n");
    }
 
    return 0;
}

Espero que esta información te sea útil.
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