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 schreiben

    ich 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


Anmelden zum Antworten