Datei Umbenennen?



  • Danke.



  • Warum viel schreiben, wenn mans auch so schafft 😃



  • Wie meinen ?



  • Hi.

    Wie kann man eine Datei umbenennen?

    MoveFile()

    Danke.

    Klar?



  • umbenenen von dateien mach ich so :

    int rename (const char alt, const char neu);
    char alt[] = "realmlist.wtf", neu[] = "realmlist2.wtf";
                 rename( alt, neu );
    

    allerdings habe ich jetz ein problem ich versuche mir grade einen dateien austauscher zu bauen udn bei mir ist irgend ein komischer fehler drin und ich finde ihn nicht der quelcode

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    int a,b;
    char c;
    int rename (const char alt, const char neu);
    int main(int argc, char *argv[])
    {
    cout<< "Auf welchen Server moechten sie Wechseln??"<<endl;
    cout<< "1:Frostmourn"<<endl;
    cout<< "2:Darknesswow"<<endl;
    cin>> a;
    if ( a<3){cout<<"bähhh"<<endl;}
    switch (a)
           {
           case 1:
                 char alt[] = "realmlist.wtf", neu[] = "realmlist2.wtf";
                 rename( alt, neu );
                 cout<< "realmliste wurde umbenant in realmlist2"<<endl;
                 char alt[] = "Darkness-WOW.wtf", neu[] = "realmlist.wtf";
                 rename( alt, neu );
                 cout<<"Darkness-WOW wurde in realmlist umbenant";<<endl            
           break;
           }   
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    allerdings haut mir devc++ immer diesen fehler raus wenn ich das compliemire

    Compiler: Default compiler
    Building Makefile: "C:\Users\Christina\Desktop\Makefile.win"
    Führt  make clean aus
    rm -f main.o  "Umschreiben der realmlisr.exe"
    
    g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"   
    
    main.cpp: In function `int main(int, char**)':
    
    main.cpp:21: error: redeclaration of `char alt[]'
    main.cpp:18: error: `char alt[14]' previously declared here
    
    main.cpp:21: error: redeclaration of `char neu[]'
    main.cpp:18: error: `char neu[15]' previously declared here
    
    main.cpp:23: error: expected primary-expression before '<<' token
    main.cpp:24: error: expected `;' before "break"
    
    make.exe: *** [main.o] Error 1
    
    Ausführung beendet
    

    währe echt net wenn ihr mir helfen könntet Ach ja Frohe Weihnachten



  • Probier mal:

    if ( a<3){cout<<"bähhh"<<endl;}
    switch (a)
           {
           case 1:
                 char *alt = "realmlist.wtf", *neu = "realmlist2.wtf";
                 rename( alt, neu );
                 cout<< "realmliste wurde umbenant in realmlist2"<<endl;
                 alt = "Darkness-WOW.wtf"; neu = "realmlist.wtf";
                 rename( alt, neu );
                 cout<<"Darkness-WOW wurde in realmlist umbenant"<<endl;
           break;
           }   
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • Es sind jetzt wohl alle Möglichkeiten durch. Eine fehlt noch: system("ren datei.alt datei.neu");
    Aber irgendwie greifen die anderen Möglichkeiten auch auf diesen OS-Command zurück.

    Es kreißte der Elefant und gebar eine Maus? 😕 :xmas1:



  • ich habe den Fehler selbber gefunden habe anstadt , ein ; verwendet danke noch mal für die schnelle antwort



  • Hi ich bin es noch mal nur mal so interessse halber wie könnte das Funktionieren wenn ich das mit 3 oder mehreren machen will ?? kann mir da einer helfen Frohes Fest :xmas1: :xmas2:



  • also folgenes

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    int a,b;
    char c;
    int rename (const char alt, const char neu);
    
    int main(int argc, char *argv[])
    {
    cout<< "Auf welchen Server moechten sie Wechseln??"<<endl;
    cout<< "1:Frostmourn"<<endl;
    cout<< "2:Darknesswow"<<endl;
    cin>> a;
    switch (a)
           {
           case 1:
                char *alt = "realmlist.wtf", *neu = "realmlist2.wtf";
                 rename( alt, neu );
                 cout<< "realmliste wurde umbenant in realmlist2"<<endl;
                 alt = "Frostmount.wtf", neu = "realmlist.wtf";
                 rename( alt, neu );
                 cout<<"Darkness-WOW wurde in realmlist umbenant"<<endl;
                 alt = "realmlist2.wtf", neu = "Darkness-WOW.wtf";
                 rename( alt, neu );
                 cout<<"realmlist2 wurde in Darkness-WOW umbenant"<<endl;
           break; 
           case 2:
                char *alt = "realmlist.wtf", *neu = "realmlist2.wtf";
                 rename( alt, neu );
                 cout<< "realmliste wurde umbenant in realmlist2"<<endl;
                 alt = "Darkness-WOW.wtf", neu = "realmlist.wtf";
                 rename( alt, neu );
                 cout<<"Darkness-WOW wurde in realmlist umbenant"<<endl;
                 alt = "realmlist2.wtf", neu = "Frostmount.wtf";
                 rename( alt, neu );
                 cout<<"realmlist2 wurde in Frostmount umbenant"<<endl;
           break;
           }   
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    das ist das Program was ich schreibe habe ich euch ja schon gezeigt das ist das komplette program allerdings sagt er mir das irgend was mit dem 2 case nicht stimmt und ich verstehe nicht warum kann mir da einer helfen ?? die fehlermeldung ist folgene

    Compiler: Default compiler
    Building Makefile: "C:\Users\Christina\Desktop\Makefile.win"
    Führt  make... aus
    make.exe -f "C:\Users\Christina\Desktop\Makefile.win" all
    g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"   
    
    main.cpp: In function `int main(int, char**)':
    
    main.cpp:28: error: jump to case label
    main.cpp:18: error:   crosses initialization of `char*neu'
    main.cpp:18: error:   crosses initialization of `char*alt'
    
    main.cpp:29: error: redeclaration of `char*alt'
    main.cpp:18: error: `char*alt' previously declared here
    main.cpp:29: error: redeclaration of `char*neu'
    main.cpp:18: error: `char*neu' previously declared here
    
    make.exe: *** [main.o] Error 1
    
    Ausführung beendet
    

    Frohe Weihnacht und danke schon ein mal iim forraus



  • Du deklarierst Variablen in den case-Zweigen, daher muss jeweils ein neuer Scope her:

    switch (a)
       {
           case 1:
           {     char *alt = "realmlist.wtf", *neu = "realmlist2.wtf";
                 rename( alt, neu );
                 cout<< "realmliste wurde umbenant in realmlist2"<<endl;
                 alt = "Frostmount.wtf", neu = "realmlist.wtf";
                 rename( alt, neu );
                 cout<<"Darkness-WOW wurde in realmlist umbenant"<<endl;
                 alt = "realmlist2.wtf", neu = "Darkness-WOW.wtf";
                 rename( alt, neu );
                 cout<<"realmlist2 wurde in Darkness-WOW umbenant"<<endl;
                 break;
           }
           case 2:
           {     char *alt = "realmlist.wtf", *neu = "realmlist2.wtf";
                 rename( alt, neu );
                 cout<< "realmliste wurde umbenant in realmlist2"<<endl;
                 alt = "Darkness-WOW.wtf", neu = "realmlist.wtf";
                 rename( alt, neu );
                 cout<<"Darkness-WOW wurde in realmlist umbenant"<<endl;
                 alt = "realmlist2.wtf", neu = "Frostmount.wtf";
                 rename( alt, neu );
                 cout<<"realmlist2 wurde in Frostmount umbenant"<<endl;
                 break;
         }
      }
    

    Rename erwartet bei dir jeweils einen einzelnen char, du möchtest aber eigentlich einen Pointer auf ein Array übergeben

    BOOL rename (const char* alt, const char* neu)
    {
      return MoveFile(alt, neu);
    }
    

    Stringliterale sind konstant und dürfen nicht verändert werden, also deklarier sie am Besten auch gleich so

    const char *alt = "Ein text";
    // dummheiten wie alt[4] = 'T'; werden nun vom Compiler unterbunden
    

    Und du solltest dir wirklich überlegen, mal einen neuen Compiler / neue IDE zu verwenden. Zur Windowsporgrammierung bietet sich das Visual Studio an, die Expressversionen sind kostenfrei. Eine mögliche Alternative wäre Code::Blocks.


Anmelden zum Antworten