problem bei einem programm zum umbenennen von dateien...
-
Hallo,
ich habe ein Problem mit einem Programm. Das Programm soll in einem Verzeichniss die Dateien und ihren Dateinamen auslesen , danach wird aus einer Textdatei eine Zeile ausgelesen und aus dem alten Dateiname und der Zeile ein neuer Name generiert. Die Datei soll dann in diesen neuen Namen umbenannt werden und das ganze soll für alle Dateien passieren (hier: ogg-files).
Mein Code funktioniert eigentlich, nur das er jeweils nur die erste DAtei umbenennt und dann ausgibt das beim Umbenennen fehler auftreten...
?
Ich hab schon gekuckt ob ich vielleicht ungültige Zeichen verwende, etc. Alles ohne erfolg.
#include <cstdlib> #include <iostream> #include <windows.h> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { //Filehandling HANDLE fHandle; WIN32_FIND_DATA wfd; int zeilenid = 93; //EINLESEN DER DATEIEN //Erste Datei "." fHandle=FindFirstFile("*",&wfd); //Zweite Datei ".." FindNextFile(fHandle,&wfd); while (FindNextFile(fHandle,&wfd)) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){ //Tue nichts bei Unterverzeichniss } else { //Durchsuchen nach ogg-Files string alt = wfd.cFileName; if (alt.substr(alt.length()-3, alt.length())=="ogg") { //Generieren des neuen Dateinamens string index = alt.substr(10, 3); string datum = alt.substr(15, 10); //Ließt die Zeilen aus um den Rest des Dateinamens zu generieren char zeile[200]; unsigned int aktuellezeile = 1; FILE *in; in = fopen( "busch.bf2", "r"); while (aktuellezeile!=zeilenid) { fgets( zeile, 200, in); aktuellezeile++; } zeilenid -= 1; //--------------------------------------------------------------- //Umwandlung char zeileneu[200]; for (unsigned int i=13; i<=200; i++) { zeileneu[i-13]=zeile[i]; } string titel = zeileneu; string neuername = index + " - " +datum + " - " + titel + ".ogg"; //Umwandlung (zuerst dateinamen in char-arrays, dann umbenennung char neu[200]; for (unsigned int i = 0; i <=neuername.length(); i++) { if (neuername.substr(i, 1)=="/"||neuername.substr(i, 1)=="\ " ||neuername.substr(i, 1)=="*"||neuername.substr(i, 1)=="?" ||neuername.substr(i, 1)==" "||neuername.substr(i, 1)==":") { neu[i]=' '; } else { if (neuername.substr(i, 1)=="[") { neu[i] = '('; } else { if (neuername.substr(i, 1)=="]") { neu[i] = ')'; } else { neu[i] = neuername[i];} } } } char alter[200]; for (unsigned int i = 0; i <=alt.length(); i++) { alter[i] = alt[i]; } //EIGENTLICHE UMBENENNUNG int x = rename(alter, neu); } //IF dateiendung ist ogg } //else } //WHILE findnextfile FindClose(fHandle); system("PAUSE"); return EXIT_SUCCESS; }
Bitte helft mir. Ich glaube der Fehler muss irgendwie mit dem rename befehl zusammenhängen...
-
Hab mir das jetzt nicht durchgesehen, aber warum verwendest Du nicht einfach rename(1)?
-
hätt'ste ma besser...
Nee, hab schon rename genommen. das problem liegt ...
-
HILFE!!! ich probier jetzt schon ewig rum...ich find einfach mein fehler nicht.
kann mir bitte bitte bitte mal jemand einen tipp geben. ich verzweifle.das problem ist das der rename befehl beim erstenmal richtig funktioniert und danach nicht mehr...
ich habs mit allem möglichen probiert (zb. rename aus getrennten methoden aufzurufen etc.) aber ES GEHT EINFACH NET