Avatar billede dcgeek Nybegynder
09. marts 2003 - 11:55 Der er 7 kommentarer og
1 løsning

Slette filer

Hvordan sletter jeg mapper med alle de filer der måtte være der OG hvordan sletter jeg en enkelt fil?

Koden skal kunne compiles med Dev-c++ og virke i DOS.
Avatar billede soreno Praktikant
09. marts 2003 - 12:21 #1
Mener du MS-DOS eller "Windows DOS" (konsol vinduet) ?
Avatar billede soreno Praktikant
09. marts 2003 - 12:21 #2
altså en deltree.exe implementation.. ?
Avatar billede soreno Praktikant
09. marts 2003 - 12:25 #3
Prøv at kigge på dette (Windows) eksempel:
#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 - entering directory: %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;
}
Avatar billede dcgeek Nybegynder
09. marts 2003 - 13:02 #4
Det skal være 100 % uafhængig af Windows
Avatar billede soreno Praktikant
09. marts 2003 - 13:10 #5
Så skal du have fat i en anden compiler. MinGW kan ikke lave DOS programmer.

Du kan f.eks. bruge "Turbo C" fra:
http://community.borland.com/article/0,1410,20841,00.html

Eller djgpp fra:
http://www.delorie.com/djgpp/

Sidst nævnte har jeg ingen erfaring med.
Avatar billede dcgeek Nybegynder
09. marts 2003 - 20:29 #6
kan jeg så ikke få noget kode til Turbo C?
Avatar billede soreno Praktikant
09. marts 2003 - 21:18 #7
Avatar billede arne_v Ekspert
10. marts 2003 - 16:38 #8
stdio.h har en remove funktion som kan slette enkelte filer
på alle platforme.

Alle POSIX compliant platforme (+ formentlig det fleste ikke compliant
ogsp) har:
  rmdir som kan slette et directory

Problemet er at finde alle filer !

DOS har sine funktioner.
Windows har sine funktioner (se Sørens kode).
Unix har sine funktioner (opendir/readdir).

Ikke en snus portable.

Mit forslag hvis du skal have noger mere generelt er at udføre
en eksternt defineret kommando med et system kald.

Den kommando kan så være:
  deltree %s /y
  rd %s /s
  rm -R %s
etc.

Programmet laver så en sprintf med den streng og directory navn
og kalder system med resultatet.
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