Avatar billede unsigned Nybegynder
05. november 2002 - 11:05 Der er 4 kommentarer og
1 løsning

Dan en liste over hvilke mapper, der ligger i en mappe.

I mappen "C:\Work\Skabelon\Permut" ligger nogle mapper. Disse mapper skal slettes. For at slette mapperne, skal jeg først bruge en liste over hvilke mapper, der ligger i mappen Permut. Hvilken C++ kommando svarer med en liste over hvilke mapper, der ligger i en mappe?
Avatar billede jpk Nybegynder
05. november 2002 - 11:17 #1
Hvis dette er en fortsættelse af dit sidste spørgsmål, altså du vil have en liste af mapper for at kunne slette disse, er det ikke den rigtige fremgangsmåde!

Hvad nu hvis nogle af disse mapper igen har undermapper (det har de måske ikke lige i dette tilfælde, men...)

Det du skal, hvis du vil lave en generel funktion der kan slette en folder og evt. filer og underfoldere osv, er at lave en rekursiv funktion der sletter alle filer i mappen og kalder sig selv for hver underfolder i mappen.
Avatar billede unsigned Nybegynder
05. november 2002 - 11:28 #2
-> jpk  Spørgsmålet er en fortsættelse af mit sidste spørgsmål. De mapper jeg skal slette har i nogle tilfælde undermapper, det har du sådan set ret i. I Permut ligger der kun mapper. Jeg har prøvet at skrive en algoritme, men kan ikke rigtig overskue det. I første omgang, vil jeg være glad for en liste over mapper, så kan jeg altid lave noget rekursivt, når jeg har overblik over kommandoerne.
Avatar billede jpk Nybegynder
05. november 2002 - 11:30 #3
Hvilket udviklingsmiljø bruger du?
Avatar billede unsigned Nybegynder
05. november 2002 - 11:35 #4
Jeg bruger Borland C++ Builder under Windows 98.
Avatar billede soreno Praktikant
05. november 2002 - 15:59 #5
sådan her kan du gøre det:
#include <windows.h>
#include <stdio.h>
#include <string.h>

void deleteDir(char *dir)
{
    WIN32_FIND_DATA fd;
    HANDLE handle;   
    char absPath[MAX_PATH];
    char tempPath[MAX_PATH];
    strcpy(tempPath, dir);
    strcat(tempPath, "\\*.*");
 
    handle = FindFirstFile(tempPath, &fd);
   
    if(handle != INVALID_HANDLE_VALUE)
    {
        do
        {
            strcpy(absPath, dir);
            strcat(absPath, "\\");
            strcat(absPath, fd.cFileName);
           
            if(0 == strcmp(fd.cFileName, ".") || 0 == strcmp(fd.cFileName, ".."))
            {
                NULL;
            }
            else if(fd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
            {
                printf("file is dir - recurse: %s\n", absPath);
                deleteDir(absPath);
                printf("\tdeleting dir %s\n", absPath);
                RemoveDirectory(absPath);             
            }
            else
            {
                printf("\tdeleting file %s\n", absPath);
                DeleteFile(absPath);
            }
        }while(FindNextFile(handle, &fd));
    }
    FindClose(handle);
}

int main(int argc, char **argv)
{
    deleteDir("c:\\test");
    return 0;
}

så slettes alle mapper og filer i c:\test
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