Eingegebene Datei löschen
-
Ok als Anfänger erstmal schwierig aber ich werds versuchen auch wenn die Beispiele
winapi sind...
-
void ShowFiles(const char *path) { WIN32_FIND_DATA fileData; HANDLE hFind = FindFirstFile(path, &fileData); if (hFind != INVALID_HANDLE_VALUE) { do { printf("%s\n", fileData.cFileName); } while (FindNextFile(hFind, &fileData)); } } int main() { ShowFiles("C:\\*"); return 0; }
Vielleicht hilft dir das ja.
-
Danke !!!
Hat mitShowFiles("C:\\Ordner\\Ordner\\*");
geklappt .
-
if (hFind != INVALID_HANDLE_VALUE) { do { printf("%s\n", fileData.cFileName); remove(fileData.cFileName); } while (FindNextFile(hFind, &fileData)); }
habs jetzt mal damit vesucht Compiler spuckt keine Fehler aus
aber es zeigt auch keine Wirkung...
-
FindFirstFile etc. findet auch Ordner.
Guck dir mal
http://msdn.microsoft.com/en-us/library/aa365740(v=vs.85).aspx
bzw.
http://msdn.microsoft.com/en-us/library/gg258117(v=vs.85).aspx
an. Und dann füge z.B. ein:if (fileData.dwFileAttributes & ~FILE_ATTRIBUTE_DIRECTORY) printf()..
Edit:
Bzw. remove() "wirkt" auf deine Umgebung.
http://msdn.microsoft.com/en-us/library/aa365530(v=vs.85).aspx
-
Danke aber ich bin sehr warscheinlich zu doof dafür..
Also da remove ja umgebungsbedingt ist wie lösche ich die gefundenen Dateien?
-
void DelAllFilesInDirectory(const char *path, const char *files) { SetCurrentDirectory(path); WIN32_FIND_DATA fileData; HANDLE hFind = FindFirstFile(files, &fileData); if (hFind != INVALID_HANDLE_VALUE) { do { if (fileData.dwFileAttributes & ~FILE_ATTRIBUTE_DIRECTORY) { printf("%s\n", fileData.cFileName); remove(fileData.cFileName); } } while (FindNextFile(hFind, &fileData)); } } int main() { DelAllFilesInDirectory("E:\\ordner", "*.txt"); return 0; }
Was bitte war an "SetCurrentDirectory" nicht zu verstehen?
-
Sorry habe das scho kapiert aber SetCurrentDirectory in der do-Schleife eingesetzt ...Danke!
Und was ist der Sinn von
if (fileData.dwFileAttributes & ~FILE_ATTRIBUTE_DIRECTORY) {
Bin halt 'n Anfänger
-
Kurz: Das guckt ob das gefundene Handle überhaupt eine Datei ist.
Lang: Dualsystem
Die WinAPI setzt also irgendwelche bits in dwFileAttributes, um uns zu sagen was wir das überhaupt gefunden haben. Der Wert von FILE_ATTRIBUTE_DIRECTORY ist 0x10 (=16) und setzt genau ein bit. (Windows 7 Taschenrechner kann das anzeigen. :))
Wenn wir wissen wollten, ob das bit gesetzt ist, würden wir
if (fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
fragen. Siehe auch: Binäre Operatoren.~x ist das Komplement von x, also aus binär 10010 würde 01101.
Mir fällt aber gerade auf, dass
if (!(fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
wohl sicherer wäre.
-
Aso... ^^
Meine letzte Frage da jetzt der Paramter "files" übergeben wurde , gibt es eine möglichkeit keine Bestimmten DateiendungenDelFilesInDirectory ("C:\\*" , "*.txt");
zu nehmen sondern alle ?
-
crashjosh schrieb:
Meine letzte Frage da jetzt der Paramter "files" übergeben wurde , gibt es eine möglichkeit keine Bestimmten Dateiendungen
DelFilesInDirectory ("C:\\*" , "*.txt");
zu nehmen sondern alle ?
DelFilesInDirectory( "C:\\" , "*" );
-
Danke so fertig :p