Ordner Inhalt löschen



  • Hi

    Ich bin C++ Neuling! Um zu üben habe ich folgendes "Programm" geschrieben:

    #include <stdio.h>
    #include <windows.h>
    #include <string.h>
    
    typedef struct _WIN32_FIND_DATA { // wfd 
        DWORD dwFileAttributes; 
        FILETIME ftCreationTime; 
        FILETIME ftLastAccessTime; 
        FILETIME ftLastWriteTime; 
        DWORD    nFileSizeHigh; 
        DWORD    nFileSizeLow; 
        DWORD    dwReserved0; 
        DWORD    dwReserved1; 
        TCHAR    cFileName[ MAX_PATH ]; 
        TCHAR    cAlternateFileName[ 14 ]; 
    }; 
    
    WIN32_FIND_DATA wfd;
    HANDLE fHandle;
    TCHAR TempPath[] = {"C:\\Dokumente und Einstellungen\\Besitzer\\Desktop\\Neuer Ordner\\*"};
    
    int main ()
    
    {
    fHandle=FindFirstFile(TempPath,&wfd); 
    
    while (FindNextFile(fHandle,&wfd))
    {
    //http://www.cplusplus.com/ref/cstdio/remove.html
       if( remove(wfd.cFileName) == -1 )
        perror( "Error deleting file" );
      else
        puts( "File successfully deleted" );
      return 0;
    }
    FindClose(fHandle);
    
    }
    

    Jedoch funktioniert der Code nicht! Weshalb?

    Lg



  • keine ahnung. was soll es machen? was macht es? kommen fehlermeldungen? sagt der compiler irgendwas?



  • Hi

    Der Code sollte alle Datein in dem angegebenen Pfad löschen. Der Compiler compiliert fehlerlos. Als Ausgabestring erhalte ich: Error deleting file: Permission denied. Ich habe Adminrechte, der Inhalt sollte also problemlos gelöscht werden können.

    Lg



  • dann versuch doch mal die datei von hand zu löschen...



  • Hi

    Das manuelle Löschen funktioniert. Der Code ist irgendwie nicht richtig oder unfollständig.

    Lg



  • #include <iostream.h> 
    #include <windows.h>
    #include <stdio.h>
    #include <string.h>
    
    typedef struct _WIN32_FIND_DATA { // Struktur für Find*File
        DWORD dwFileAttributes; 
        FILETIME ftCreationTime; 
        FILETIME ftLastAccessTime; 
        FILETIME ftLastWriteTime; 
        DWORD    nFileSizeHigh; 
        DWORD    nFileSizeLow; 
        DWORD    dwReserved0; 
        DWORD    dwReserved1; 
        TCHAR    cFileName[ MAX_PATH ]; 
        TCHAR    cAlternateFileName[ 14 ]; 
    }; 
    
    WIN32_FIND_DATA wfd;
    HANDLE fHandle;
    
    char TempPath1[] = {"C:\\Neuer Ordner\\*"};
    char TempPath2[] = {"C:\\Neuer Ordner\\"};
    char* WholePath;
    char* add(char*);
    
    int main ()
    {
    
        cout << "Direction: " << TempPath2 << "\n";
    
        fHandle=FindFirstFile(TempPath1,&wfd);  // erstes Handle holen, öffnen
    
        FindNextFile(fHandle,&wfd); // zweites überspringen weil :/.
    
        while (FindNextFile(fHandle,&wfd)) // alle Datein durchspielen
        {
          if ( remove(add(wfd.cFileName)) == -1 ) // löschen
          {
                cout << "Error: not deleted file\n";
          }
          else
          {
                cout << "File successfully deleted\n" ;
          }
        }
    
        FindClose(fHandle); // Handle abschliessen
    
    }
    
    char* add( char *FileName ) // Funktion für String Addition
    {
      WholePath = new char[strlen(TempPath2)+strlen(FileName)+1];  // Länge festlegen
      strcpy(WholePath, TempPath2); // erster String rein kopieren
      strcat(WholePath, FileName); // zweiter String anhängen
      cout << "Filename: " << FileName << "\n";
      return WholePath;
      delete []WholePath;
    }
    

    Entstand nach einigen Überlegungen, nach einem guten Mitagessen.

    Lg



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply