Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dateisuche in C:\\!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.02.2005, 20:44 Uhr
~[xL]Da_GoOd
Gast


Hallo!
Ich möchte in einem Program eine Datei (beispielsweise test.txt) in der gesamten Partition C\ suchen und mir den Pfad ausgeben lassen um dann damit weiter arbeiten zu können. Nur leider bin ich mit den Funktion rund um FileFind nicht sonderlich vertraut und krieg es nicht hin.
Könnte mir vielleicht jemand der auf diesem Gebiet schon mal gearbeitet hat mir ein script posten das meine erwartungen erfüllen kann.

Danke

______________________________
xTremeLamorz [xL]Da_GoOd
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.02.2005, 14:57 Uhr
Oliver
S2-Pixelgeneral



C++:
#include <iostream>
#include <windows.h>

using namespace std;



int main()
{
    HANDLE hFile;
    WIN32_FIND_DATA wfd;

    cout << "Programm listet den Inhalt von C auf: \n\n";

    // Erste Datei suchen
    hFile=FindFirstFile("c:\\*.*",&wfd);
    // Dateinamen ausgeben
    cout << wfd.cFileName << '\n';

    // Den Rest suchen
    while(FindNextFile(hFile,&wfd))
    {
        // Dateinamen ausgeben
        cout << wfd.cFileName << '\n';
    }
    
    cin.get();
    return 0;
}



Bei den Sternchen kannst du dann noch einen Dateityp angeben wenn du die Suche einschränken willst (z.B. "\\*.txt*), ansonsten wird alles gesucht. So kannst du dir den Inhalt eines Verzeichnisses auflisten lassen. Wenn du dann richtig nach einer Datei suchen willst, musst du dann halt nur noch die Unterordner immer weiter durchgehen und die Strings vergleichen.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.06.2005, 19:34 Uhr
~TrialReg
Gast


Wenn keine Reaktion kommt war die Antwort sch...

Geht auch anders ich poste mal meine deltree routine... macht von ungefähr ja das selbe

bool IsDots( char *szFile )
{
if( lstrcmp( szFile, "." ) && lstrcmp( szFile, ".." ) )
return FALSE;
return TRUE;
}
BOOL DeleteDirectory( char *szDirectory, bool force )
{
HANDLE hFind;
char szDir[MAX_PATH],szFile[MAX_PATH];
WIN32_FIND_DATA ffd;
bool bSearch, rmdir;
register DWORD i;

if( szDirectory[ (i=lstrlen( szDirectory ) - 1 ) ] == '*' )
{
*(WORD*)( &szDirectory[i-1] )=0;
rmdir=false;
}
else
rmdir=true;


lstrcpy( szDir, szDirectory );
lstrcpy( szFile,szDirectory );
lstrcat( szDir, "\\*" );
lstrcat( szFile, "\\" );

if( ( hFind=FindFirstFile( szDir, &ffd ) ) == INVALID_HANDLE_VALUE )
return FALSE;

lstrcpy( szDir, szFile );

bSearch=true;

while( bSearch )
{
if( FindNextFile( hFind, &ffd ) )
{
if( IsDots( ffd.cFileName ) )
continue;
lstrcat( szFile, ffd.cFileName );
if((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) )
{

if( !DeleteDirectory( szFile, force ) && !force)
{
FindClose( hFind );
return FALSE;
}

RemoveDirectory( szFile );
lstrcpy( szFile, szDir );
}
else
{
if( ffd.dwFileAttributes & FILE_ATTRIBUTE_READONLY )
SetFileAttributes( szFile, FILE_ATTRIBUTE_NORMAL );
if( !DeleteFile( szFile ) && !force )
{
FindClose( hFind );
return FALSE;
}

lstrcpy( szFile, szDir );
}
}
else
{
if( GetLastError() == ERROR_NO_MORE_FILES )
bSearch=false;
else
{
FindClose( hFind );
return FALSE;
}
}
}
FindClose( hFind );

if( rmdir )
return RemoveDirectory( szDirectory );
else
return true;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: