Avatar billede kingismo Nybegynder
18. januar 2001 - 14:09 Der er 7 kommentarer og
1 løsning

Søg på filens dato.

Jeg skal lave et program som skal kunne finde og slette alle filer som er ældre end 14 dage.

Hvordan finder jeg en fils dato ?

Hvordan sammenligner jeg den med dags dato ?
Avatar billede pstric Nybegynder
18. januar 2001 - 14:13 #1
Brug FindFirstFile, FindNextFile og FindClose
Avatar billede wisen Nybegynder
18. januar 2001 - 14:34 #2
Eller \"FindFirstFileEx\"...
Avatar billede wisen Nybegynder
18. januar 2001 - 14:36 #3
Disse funktioner bruger datatypen WIN32_FIND_DATA, som indeholder diverse informationer om filen...
Avatar billede pstric Nybegynder
18. januar 2001 - 14:43 #4
Avatar billede soepro Nybegynder
19. januar 2001 - 10:27 #5
Hvis du kører alm. C++ under DOS hedder de tilsvarende funktioner findfirst, og findnext og modtager/returnerer en struktur der hedder ffb. Alle funktioner, samt strukturen er defineret i <dir.h>
Avatar billede jinxed Nybegynder
19. januar 2001 - 11:58 #6
Hvordan skal filen være ældre end 14 dage?

create, write, access eller dem alle?

Jeg har koden til VC++ der dog ikke bruger FindFirstFile,... men _findfirst,...

_find er identisk til find funktionerne bortset fra navnet på funktionerne og navnet på strukturen de bruger.

Finder lige koden

Jinxed : ]
Avatar billede jinxed Nybegynder
19. januar 2001 - 13:58 #7
Hmmm... Har den ikke på arb : (

Poster den senere
Avatar billede jinxed Nybegynder
31. januar 2001 - 14:57 #8
hmm... jeg glemte vist noget....

men her er den alligevel

#include <stdio.h>
#include <io.h>
#include <string.h>
#include <time.h>
#include <direct.h>

int searchdir(char *);

long    results;
time_t    delbefore;

void main(int argc,char* argv[]){
    delbefore=time(0)-1209599;// 14 days - 1 sec
    searchdir(\"E:\\\\FileSysDel\\\\Release\\\\test\");//must call with full path or recursion will fail
    printf(\"\\n%i files deleted\\n\",results);
}

int searchdir(char *dir){
    if(!dir){
        printf(\"\\nError: !dir\\n\");
        return -1;
    }
    if(_chdir(dir)){
        printf(\"\\nError: _chdir(\\\"%s\\\") failed\\n\",dir);
        return -1;
    }
    _finddata_t file;
    long hnd, res=0;
    if((hnd=_findfirst(\"*\",&file))!=-1){
        while(!res){
            if(file.name[0]==\'.\'&&(file.name[1]==\'\\0\'||(file.name[1]==\'.\'&&file.name[2]==\'\\0\'))){
                res=_findnext(hnd,&file);
                continue;
            }
            if(file.attrib & _A_SUBDIR){
                char newdir[500];
                newdir[0]=\'\\0\';
                if(dir){
                    strcpy(newdir,dir);
                    strcat(newdir,\"\\\\\");
                }
                strcat(newdir,file.name);
                searchdir(newdir);
                res=_findnext(hnd,&file);
                continue;
            }
            if(file.time_access<delbefore&&file.time_create<delbefore&&file.time_write<delbefore){
                _chdir(dir);//recursive calls will change cwd
                if(!_unlink(file.name)){
                    results++;
                    printf(\"%s\\\\%s deleted\\n\",dir,file.name);
                }else{
                    printf(\"%s\\\\%s could not be deleted\\n\",dir,file.name);
               
                }
            }else{
                printf(\"%s\\\\%s is to recent\\n\",dir,file.name);
            }
       
            res=_findnext(hnd,&file);
        }
        _findclose(hnd);
    }
    return results;
}

Og jeg ved godt den ikke er optimal hehe

Jinxed ; }

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester