Hallo alle zusammen,
ich bastle derzeit an einem Tool, welches in einem gewählten Ordner die Namen von mp3 Dateien ordentlich umbenennt z.B.:
künstler_-_titel [HD] -> Künstler - Titel
So. Nun benutze ich als Hauptfunktion rename() von QDir. Bei der Doku steht, diese kann "failen" wenn: Die alte Datei (also der Name) nicht existiert oder wenn die Datei mit dem neuen Namen bereits existiert.
Nun beides ist nicht der Fall, wenn die Fehlermeldung kommt. Ich habe in meinem Code noch verschiedene Einstellungsmöglichkeiten z.B. Klammern samt Inhalte zu löschen. Ich habe zB ein Lied das so heißt:
ALEXANDRA STAN - Get Back (Asap).mp3
Lasse ich den Inhalt der Klammern, also -> Alexandra Stan - Get Back (asap).mp3 ) = Fehler!
Aber ist Löschen des Klammerinhalts aktiviert, funktioniert es -> Alexandra Stan - Get Back = Ja das kann man umbenennen!
Ist mir wirklich Rätselhaft. Das Einzige was auffällt ist, dass es meistens bei Namen mit Klammern, Punkten oder einzelnen Buchstaben auftritt. Ich kann es mir aber nicht erklären, wieso das nicht funktioniert und bei Google finde ich keine vernünftige Antwort dazu.
Hier mal die Hauptfunktion, die dafür zuständig ist:
ich bastle derzeit an einem Tool, welches in einem gewählten Ordner die Namen von mp3 Dateien ordentlich umbenennt z.B.:
künstler_-_titel [HD] -> Künstler - Titel
So. Nun benutze ich als Hauptfunktion rename() von QDir. Bei der Doku steht, diese kann "failen" wenn: Die alte Datei (also der Name) nicht existiert oder wenn die Datei mit dem neuen Namen bereits existiert.
Nun beides ist nicht der Fall, wenn die Fehlermeldung kommt. Ich habe in meinem Code noch verschiedene Einstellungsmöglichkeiten z.B. Klammern samt Inhalte zu löschen. Ich habe zB ein Lied das so heißt:
ALEXANDRA STAN - Get Back (Asap).mp3
Lasse ich den Inhalt der Klammern, also -> Alexandra Stan - Get Back (asap).mp3 ) = Fehler!
Aber ist Löschen des Klammerinhalts aktiviert, funktioniert es -> Alexandra Stan - Get Back = Ja das kann man umbenennen!
Ist mir wirklich Rätselhaft. Das Einzige was auffällt ist, dass es meistens bei Namen mit Klammern, Punkten oder einzelnen Buchstaben auftritt. Ich kann es mir aber nicht erklären, wieso das nicht funktioniert und bei Google finde ich keine vernünftige Antwort dazu.
Hier mal die Hauptfunktion, die dafür zuständig ist:
Code:
void MainWindow::cleanFolder(QString Path) {
QFileInfoList ListOfData;
QString CurrentName;
QDir CurrentFolder;
QStringList DataTypeFilter;
QString OldName;
DataTypeFilter << "*.mp3" << "*.wav" << "*.ogg" << "*\\*";
CurrentFolder = QDir(Path);
CurrentFolder.setFilter(QDir::Files);
CurrentFolder.setNameFilters(DataTypeFilter);
ListOfData = CurrentFolder.entryInfoList();
for (int i = 0; i < ListOfData.size(); i++) {
CurrentName = ListOfData.at(i).fileName();
OldName = ListOfData.at(i).fileName();
CurrentName = CurrentName.replace("_"," ");
CurrentName = CurrentName.toLower().replace(0,1,CurrentName.at(0).toUpper());
CurrentName = removeUserDefiendTagsFromString(CurrentName);
if (mpGUI->Action_DeleteBrackets->isChecked()) {
CurrentName = removeBracketsFromString(CurrentName);
}
if (mpGUI->Action_DeleteTags->isChecked()) {
CurrentName = removeTagsFromString(CurrentName);
}
if (mpGUI->Action_DelteUmlauts->isChecked()) {
CurrentName = removeUmlauts(CurrentName);
}
if (mpGUI->Action_DelteSpecialCharacters->isChecked()) {
CurrentName = removeSpecialCharactersFromString(CurrentName);
}
if (mpGUI->Action_DeleteNumbers->isChecked()) {
CurrentName = removeNumbersFromString(CurrentName);
}
for (int i2 = 0; i2 < CurrentName.length(); i2++) {
if ((CurrentName.at(i2) == ' ' || CurrentName.at(i2) == '-') && i2 == 0) {
CurrentName.replace(i2,1,"");
i2 = 0;
}
if (CurrentName.at(i2) == ' ') {
if (CurrentName.at(i2+1) == '.') {
CurrentName.replace(i2,1,"");
} else {
CurrentName.replace(i2,1,CurrentName.at(++i2).toUpper());
}
}
if (CurrentName.at(i2) == '-') {
if (CurrentName.at(i2-1) != ' ') {
CurrentName.replace(i2,1," -");
}
if (CurrentName.at(i2+1) != ' ') {
CurrentName.replace(i2,1,"- ");
}
}
}
if (!CurrentFolder.rename(OldName,CurrentName) && OldName != CurrentName) {
QMessageBox::information(this,"Fehler",QString("Datei %1 konnte nicht umbenannt werden!").arg(ListOfData.at(i).absoluteFilePath()));
}
}
CurrentFolder.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
CurrentFolder.setNameFilters(QStringList());
ListOfData = CurrentFolder.entryInfoList();
for (int i = 0; i < ListOfData.size(); i++) {
cleanFolder(ListOfData.at(i).absoluteFilePath());
}
}