rename txt Ordnerinhalt
-
Guten Tag,
ich möchte alle Textdateien in einem Verzeichniss mit ihrer FileSize und einem Zahlencount am Anfang umbenennen.
FEHLERMELDUNG:
16 C:\C++\FEHLER rename ordnerinhalt txt.cpp invalid operands of types `const char*' and `const char[5]' to binary `operator+'#include <iostream> #include <windows.h> #include <string> #include <stdio.h> using namespace std; int main() { int DATARR, DATSIZ, Z=0; WIN32_FIND_DATA FINDAT; HANDLE SUCHEN = FindFirstFile("C:\\C++\\*.txt",&FINDAT); do { DATSIZ = FINDAT.nFileSizeLow; string ALTNAM = FINDAT.cFileName; string NEUNAM = Z + " - " + DATSIZ + ".txt"; rename(ALTNAM.c_str(), NEUNAM.c_str()); DATARR = FindNextFile(SUCHEN,&FINDAT); Z++; } while (DATARR); cin.get(); return 0; }Währe sehr Dankbar für eine Lösung.
-
Sorry war die falsche Fehlermeldung, die richtige ist:
16 C:\Dokumente und Einstellungen\psi\Desktop\C++\BACKUP\KB REN.cpp cannot convert `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to `const char*' for argument `1' to `int rename(const char*, const char*)'
-
Die gezeigte Zeile ist korrekt - du übergibst ein const char*, die Fehlermeldung sagt aber es wäre ein std::string. Da stimmt was bei dir nicht.
Probier mal das neu-kompilieren der ganzen Datei.
-
#include <iostream> #include <windows.h> #include <string> #include <cstdio> // using namespace std; int main() { int DATARR, Z=0; //hässlich -> for-schleife und die abbruchbedingung in nen break verpacken oder so... WIN32_FIND_DATA FINDAT; HANDLE SUCHEN = FindFirstFile("C:/C++/*.txt", &FINDAT); do { int DATSIZ = FINDAT.nFileSizeLow; string ALTNAM = FINDAT.cFileName; string NEUNAM = Z + " - " + DATSIZ + ".txt"; //geht nicht... siehe FAQ - einmal zahl und zurück oder so rename(ALTNAM.c_str(), NEUNAM.c_str()); DATARR = FindNextFile(SUCHEN,&FINDAT); Z++; } while (DATARR); cin.get(); }evtl solltest du mal deiner Caps-Taste eine kleine Pause gönnen - varialben-name in caps zu schreiben ist hässlich - das macht man üblicherweise nur bei makros oder globalen konstanten...
deine schleife sieht auch eher so aus, als ob es ne for-schleife werden könnte ^^
das return am ende ist nicht nötig
einer deiner header war falsch
den pfad kann man auch mit '/' angeben statt jedesmal '\' zu schreibenich hoffe, ich konnte ein wenig helfen ^^
bb
-
Hallo, erstmal Danke für die Hilfe.
Ich hab alles etwas geändert, lässt sich Compilen aber benennt noch nicht um.#include <iostream> #include <windows.h> #include <string> #include <cstdio> using namespace std; int main(void) { WIN32_FIND_DATA DATDLL; HANDLE SUCHEN = FindFirstFile("C:\C++\*.txt", &DATDLL); while(FindNextFile(SUCHEN, &DATDLL)) { int DATSIZ = DATDLL.nFileSizeLow; string ALTNAM = DATDLL.cFileName; string NEUNAM = DATSIZ + ".txt"; rename(ALTNAM.c_str(), NEUNAM.c_str()); } cin.get(); }keine Fehlermeldung nur "10:31 C:\C++\Kopie.cpp [Warning] unknown escape sequence '\D'
-
u schrieb:
HANDLE SUCHEN = FindFirstFile("C:\C++\*.txt", &DATDLL);Ich hab gesagt, dass du '/' schreiben sollst ^^
siehe auch:
me schrieb:
HANDLE SUCHEN = FindFirstFile("C:/C++/*.txt", &FINDAT);bb