MoveFile funktioniert nicht nach Vorstellung[Gelöst]
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich halte die Verschiebung für falsch. Es handelt sich hier eher um ein C++ denn ein WinAPI-Problem.
-
Dieses "Gewurschtel" funktioniert irgendwie...

#include <windows.h> #include <iostream> #include <string> //////////////////////////////////// #define FILTER "C:\\test\\*.txt" //////////////////////////////////// std::string convert(wchar_t *toconvert){ char cstr[512]; for(short cnt=0;*(toconvert+cnt)!='\0';cnt++){ cstr[cnt]=static_cast<char>(*(toconvert+cnt)); cstr[cnt+1]='\0'; } return cstr; } std::string getdirectorypath(wchar_t *toconvert){ std::string buf=convert(toconvert); return buf.erase(buf.length()-5,buf.length()); } int main(void){ wchar_t filestochange[]=TEXT(FILTER); std::string directorypath=getdirectorypath(filestochange); WIN32_FIND_DATA wfd; HANDLE hnd=FindFirstFile(filestochange,&wfd); std::cout<<"Folgende Dateien wurden umbenannt:"<<std::endl; if(hnd){ short cnt=0; std::string files[1025]; do{ files[cnt]=convert(wfd.cFileName); std::cout<<std::endl<<files[cnt]; cnt++; }while(FindNextFile(hnd,&wfd)); do{ cnt--; std::string filelabel="A"; filelabel[0]='A'+cnt; std::rename((directorypath+files[cnt]).c_str(),(directorypath+filelabel+".txt").c_str()); }while(cnt>0); } FindClose(hnd); Sleep(2000); }
-
heyho,
danke braunstein, die lösung kommt dem schon nahe was ich machen möchte, nur leider musste ich feststellen das mit
const srd::stringnicht wirklich geklappt hat, hier mein code ausschnitt.
std::cout<<"Folgende Datein wurden gefunden: "<<wfd.cFileName<<std::endl; zae++; std::string quelle("C\\Test\\"); quelle +=wfd.cFileName; std::stringstream str; str<<"Test"<<zae<<".txt"; std::cout<<str.str().c_str()<<std::endl; MoveFile(quelle.c_str(),str.str().c_str());komisch is nur das er nicht umbenennt. ich dachte es liegt daran das ich meine exe nicht in dem verzeichnis habe welches ich als quelle angegeben habe, aber daran lag es auch nicht, was könnte also jetzt der fehler sein, das er die datein nicht umbenennt?
-
Firefighter schrieb:
was könnte also jetzt der fehler sein, das er die datein nicht umbenennt?
Man könnte auch mal die grundlegendsten Fehlerdiagnosemechanismen anwenden:
- Rückgabewert prüfen
- GetLastError aufrufen
-
ok da hast du recht, aber wenn ich mir den rückgabewert ausgeben lasse und ich bekomme 0 wieder, dann bin ich genauso schlau wie vorher, denn das die umbenennung nicht geklappt hat
-
Firefighter schrieb:
aber wenn ich mir den rückgabewert ausgeben lasse und ich bekomme 0 wieder, dann bin ich genauso schlau wie vorher, denn das die umbenennung nicht geklappt hat
Das war ja auch nur die Hälfte der Fehlerdiagnose-Basics.
-
Das hier
std::string quelle("C\\Test\\");kann ja auch nicht funktionieren. Woher weißt du überhaupt, dass sich die Datei in diesem Pfad befindet?
-
ich weiß das daher, weil ich ein verzeichnis angelegt habe mit dem namen Test und dort eine vielzahl von willkürlich benannten textdateien liegt

und wie ich gerade mitbekommen habe, fehlt dort auch ein : nach dem C...ohhh wie unaufmerksam
-
GELÖST