Datei umbenennen
-
Hallo,
ich möchte in einem Verzeichnis ein paar Dateien umbenennen.
Ich habe mir bereits den Pfad zu Datei geholt und einem neuen
CString den gewünschten neuen Namen zugewiesen.Jetzt steh ich aber wie der Ochs vor dem Berg wie ich die Datei
umbenenne. Soll ich die Datei komplett einlesen und dann unter
dem neuen Namen wieder hinschreiben? Klappt das mit allen Dateien,
oder riskiere ich dabei evtl. die Datei beim Rückschreiben zu
"zerstückeln"?Eine Idee wäre evtl. ja noch mittels WinAPI:
CString a="c:\\test.txt"; CString b="c:\\abcdefg.txt"; ::rename(a,b);Aber kann ich das mit jeder Datei(doc,xls,exe...) so machen?
-
Ich weiß nicht genau ob das reicht, aber es gibt ne Funktion ".Rename()".
CFile test; test.Rename(<alter name>,<neuer name>);Aber ich habs nicht probiert.
Probiers mal aus und probier mal deine ideen einfach mal aus...try & error methode
-
Jupp das geht. Scheint das Gegenstück zum WinAPI-Weg zu sein

Mit meiner Test.exe hat es super geklappt. Ich hoffe mal da wird
nicht irgendwo eine Datei bei zerstückelt.Hier habe ich noch einen Altenativweg gefunden.
Ich vermute aber mal es ist egal welchen Weg man wählt:void COperationenDlg::OnUmbenennen() { CString strDateiAlt = "C:\\test.txt"; CString strDateiNeu = "C:\\datei.txt"; CFileFind DateiSuchen; if(DateiSuchen.FindFile(strDateiAlt)) { // Datei vorhanden, also umbenennen strDateiAlt += '\0'; strDateiNeu += '\0'; SHFILEOPSTRUCT shFile; ZeroMemory(&shFile, sizeof(shFile)); shFile.wFunc = FO_RENAME; shFile.pFrom = strDateiAlt; shFile.pTo = strDateiNeu; SHFileOperation(&shFile); MessageBox("Die Datei " + strDateiAlt + " wurde in " +strDateiNeu + " umbenannt"); } else { // Datei nicht vorhanden MessageBox("Die Datei " + strDateiAlt + " ist nicht vorhanden", "Datei nicht vorhanden", MB_ICONINFORMATION); } }
-
Uruk-h4j schrieb:
CFile test; test.Rename(<alter name>,<neuer name>);CFile::Rename ist static, du brauchst also kein CFile-Objekt zu erstellen.
-
@ MFK:
Jo Danke. Gut zu wissen. Dan spar ich mir die Zeile beim nächsten mal
