PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suchmethode


Lord Nikon
2003-08-30, 14:15:01
Hi ,
ich wollte wissen, ob es einen Winapi Aufruf gibt , der wenn ich z.B *.mp3 übergebe mir alle Pfadinformation zurückliefert , die sich auf meiner Festplatte befinden.

ScottManDeath
2003-08-30, 14:42:48
#include <windows.h>
#include <stdio.h>

WIN32_FIND_DATA FileData;
HANDLE hSearch;
DWORD dwAttrs;
char szDirPath[] = "c:\\TEXTRO\\";
char szNewPath[MAX_PATH];
char szHome[MAX_PATH];

BOOL fFinished = FALSE;

// Create a new directory.

if (!CreateDirectory(szDirPath, NULL))
{
printf("Couldn't create new directory.");
return;
}

// Start searching for .TXT files in the current directory.

hSearch = FindFirstFile("*.txt", &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
printf("No .TXT files found.");
return;
}

// Copy each .TXT file to the new directory
// and change it to read only, if not already.

while (!fFinished)
{
lstrcpy(szNewPath, szDirPath);
lstrcat(szNewPath, FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, FALSE))
{
dwAttrs = GetFileAttributes(FileData.cFileName);
if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
{
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY);
}
}
else
{
printf("Couldn't copy file.");
return;
}

if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
MessageBox(hwnd, "No more .TXT files.",
"Search completed.", MB_OK);
fFinished = TRUE;
}
else
{
printf("Couldn't find next file.");
return;
}
}
}

// Close the search handle.

FindClose(hSearch);

Xmas
2003-08-30, 15:51:57
Boah, wenn man sowas sieht lernt man Python erst richtig schätzen ;)

Matti
2003-08-30, 15:59:19
...wieso? Wie würde das in Python aussehen?

Lord Nikon
2003-08-30, 16:32:33
@Matti
thx für die Antwort

Matti
2003-08-30, 17:00:48
danke, daß du dich bei mir bedankst, aber die 1. Antwort war nicht von mir ;D

Lord Nikon
2003-08-30, 17:36:29
upps leicht verwechselt *G*
Ich meinte natürlich ScottManDeath.

Xmas
2003-08-30, 17:54:58
Original geschrieben von Matti
...wieso? Wie würde das in Python aussehen?
So:

import os

def findfiles(ext, searchdir):
found = []
for path, dirs, files in os.walk(searchdir):
for file in files:
if os.path.splitext(file)[1].lower() == ext.lower():
found.append(os.path.join(path, file))
return found

Gast
2003-08-30, 18:18:24
Original geschrieben von Xmas
So:
/*.....*/


Das ist alles? :o

Xmas
2003-08-30, 18:44:45
Ja, wobei das aber nur die Antwort auf Lord Nikons Frage war. ScottManDeath hat ja ein Codebeispiel gebracht, dass alle txt-Dateien kopiert und auch die Attribute überprüft. Dennoch ist der Python-Code übersichtlicher.

Lord Nikon
2003-08-31, 18:41:18
wie krieg ich das hin, dass die Suche rekursiv ist und somit auch die untergeordneten Ordner durchsucht ?

Xmas
2003-08-31, 21:31:07
Ach ja, fast dasselbe Problem hatten wir schonmal ;)

http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=50218

Lord Nikon
2003-08-31, 22:30:15
thx.
Da die Suchfunktion leider ja deaktiviert ist , wusste ich nicht das es dazu schon einen Thread dazu gab.