Ordner Struktur anzeigen



  • HI,
    und zwar hab ich mal ne Frage.
    Ich würde gerne die komplette Ordnerstruktur anzeigen von Laufwerk c:\

    mein quellcode sieht wie folgt aus.

    void PrintDirectory(char *pPath)
    {
    	char path[_MAX_PATH];
    	char nextLevel[_MAX_PATH];
    	strcpy (path, pPath);
    	strcat (nextLevel, "*.*");
    
    	WIN32_FIND_DATA FileData; 
    
    	HANDLE hfind = FindFirstFile(path, &FileData);
    
    	int FindMoreFiles; 
    	int dir = 0;
    	int file  = 0;
    
    	if (hfind != INVALID_HANDLE_VALUE)
    	{
    		do
    		{
    			if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    			{      				
    				cout<< "<Ordner> " << FileData.cFileName << endl <<endl;
    
    				strcat (FileData.cFileName, "\\");
    				strcat (path, FileData.cFileName);
    
    				cout << "testausgabe:" << path << endl; // testausgabe
    
    				strcpy (nextLevel, path);
    
    				PrintDirectory(nextLevel);
    
    				cout << nextLevel << endl; // testausgabe
    
    				dir++; 
    			}
    
    			else 
    			{
    				cout << "<Datei>  " << FileData.cFileName << endl; 
    				file++; 
    			}  
    
    			FindMoreFiles = FindNextFile(hfind,&FileData);
    		} while (FindMoreFiles);
    
    	}
    
    	else
    	{
    		cout << "Dieser Datentraeger\\Ordner ist leer." << endl;
    	}
    
    	FindClose (hfind);
    
    	cout << endl << "Insgesamt" << endl;
    	cout << "Ordner:  "<< dir << endl;
    	cout << "Dateien: "<< file << endl << endl;
    }
    

    und in der Main steht folgendes.

    PrintDirectory("c:\\");
    cout << "Druecken Sie eine Tasten um ins Menu zu gelangen." << endl;
    getch ();
    

    ausgegeben wird nun immer das.

    <Ordner> WINNT
    
    testausgabe:c:\*.*blaaa\Dokumente und Einstellungen\HajoDial\Hd_test\Programme\R
    ECYCLER\SVN_Projekte\SVN_Repos\System Volume Information\Temp\test\WINNT\
    Dieser Datentraeger\Ordner ist leer.
    
    Insgesamt
    Ordner:  0
    Dateien: 0
    

    er hängt also jeden Ordner immer hinten drann.
    was ich komisch find is der teil. "."
    aber wenn ichs raus mach gehts gar nich.

    vielen Dank schonmal



  • Du bekommst ja immer nur den Ordnernamen zurückgeliefert. Also musst du dir aus diesem wieder den Pfad zusammensetzen. Hierbei kannst du aber nicht direkt den String von FindFirstFile verwenden, da hier ja noch das * (mit . solltest du nur Sachen bekommen, die auch einen Punkt enthalten, oder 🙄 ) dranhängt - also entweder den Pfad ohne \* merken, oder eben vor dem zusammensetzen das \* abschneiden 🙂


Anmelden zum Antworten