Dateien umbenennen unter Windows 98
-
Hallo!
Ich möchte mit einem kleinen Programm Dateien umbenennen. Ich habe herausgefunden, dass ich das mit der Funktion MoveFileEx tun kann. So weit, so schlecht. Die Funktion wird von Windows 98 nicht unterstützt, was ich aber bräuchte. Da ich aber auch evtl. vorhandene Dateien überschreiben möchte, kann ich laut MSDN nicht MoveFile benutzen, sondern muss auf die Kombination von CopyFile und DeleteFile zurückgreifen. Es klappt auch alles wie angenommen, nur kann ich z.B. folgende Umbenennung nicht durchführen: "HALLO.dat" in "hallo.dat"
Für das System scheint es dieselbe Datei zu sein und es lässt nicht zu, eine Datei auf sich selbst zu kopieren.
Eigentlich kann man so eine einfache Umbenennung mit dem Explorer unter Windows 98 durchführen und auch bei bestimmten Programmen wie z.B. Total Commander ist das möglich. Nur wie?
Die einzige Lösung, die ich gefunden habe, ist die Umbenennung von "HALLO.dat" in z.B. "temp.dat" und dann von "temp.dat" auf "hallo.dat". Es zeigt zwar, dass die Unterscheidung zwischen Groß- und Kleinschreibung generell klappt, aber das kann doch keine gute Lösung sein.
Für eure Hilfe wäre ich wirklich dankbar!
MfG, Philipp
-
MoveFile(TEXT("C:\\HALLO.dat"), TEXT("C:\\hallo.dat"));funzt bei mir.
-
SHFileOperation
-
Insbesondere unter Win98 sind die Dateien HALLO.DAT und hallo.dat auch identisch. Die Abwärtskompatiblität zwischen FAT32 und FAT führt dazu. Unter Windows sind Dateinamen im algemeinen aber auch nicht case-sensitive.
-
Also danke erst einmal für eure schnellen Antworten!
Ich muss mir noch angucken, was TEXT ("...") genau bewirkt (kann man sich ja schon fast denken :D), aber wenn es so einfach zu lösen ist, ist das klasse.
Auf SHFileOperation bin ich nach meinem Post auch gestoßen, guck ich mir auch noch genauer an, obwohl die andere Lösung einfacher aussieht.
Ich habe auch gedacht, dass unter Windows die Dateinamen nicht case-sensitive sind, wenn ich mir mein Problem so anschaue. Verwundert hat mich nur, dass Programme wie Explorer und Total Commander sie trotzdem case-sensitive anzeigen können. Wie kann das sein? Ist jetzt nur bloßes Interesse, aber wenn jemand darauf eine Antwort oder einen Link weiß...
Also noch mal vielen Dank!
Grüße, Philipp
-
So, ich hab es jetzt halbwegs gelöst, zumindest verstanden.
Windows unterscheidet in diesem Fall natürlich nicht zwischen Groß- und Kleinschreibung, es können ja auch nich die Dateien HALLO.dat und hallo.dat in einem Ordner existieren. Und weil ich mit CopyFile arbeite, kann Windows die Datei nicht auf sich selbst kopieren. Ich prüfe einfach, ob die alte Datei (nicht case-sensitive) genauso heißt wie die neue und benutze in dem speziellen Fall MoveFile, um sie einfach "umzubenennen".Ist zwar nicht das Gelbe vom Ei, aber es funktioniert und das habe ich euch verdanken

See ya,
Philipp