Bezeichnungsbestandteile eines Dateinamens tauschen
Moderators: Hacker, Stefan2, white
-
- Junior Member
- Posts: 6
- Joined: 2007-01-03, 20:36 UTC
- Location: Nürnberg
Bezeichnungsbestandteile eines Dateinamens tauschen
Hallo Leute,
ich habe mehrere tausend Karaoke Dateien. Bei diesen möchte ich gerne die Organisation der Bezeichnung ändern. So möchte ich z.B. die Datei Bananarama - Venus.mpg zu Venus - Bananarama.mpg automatisch ändern lassen. Natürlich ist auch die Anzahl der Buchstaben vor und nach dem minus unterschiedlich.
Wie kann ich dieses bewerkstelligen ?
Gruß
Alex
ich habe mehrere tausend Karaoke Dateien. Bei diesen möchte ich gerne die Organisation der Bezeichnung ändern. So möchte ich z.B. die Datei Bananarama - Venus.mpg zu Venus - Bananarama.mpg automatisch ändern lassen. Natürlich ist auch die Anzahl der Buchstaben vor und nach dem minus unterschiedlich.
Wie kann ich dieses bewerkstelligen ?
Gruß
Alex
- hoppfrosch
- Junior Member
- Posts: 67
- Joined: 2004-10-20, 05:39 UTC
Das geht über Regular Expressions.
Im Multi-Rename Tool (ctrl-M) folgendes Vorgehen:
Umbenennmaske/Dateiname: [N]
Suchen und Ersetzen:
Suchen nach: ([a-zA-Z]*) - ([a-zA-Z]*)
Ersetzen durch: $2 - $1
Regex: aktiviert
Subst: deaktiviert
Der Regex ([a-zA-Z]*) - ([a-zA-Z]*) bedeutet:
Suche nach einer Zeichenfolge die die Zeichen a bis z und A bis Z beliebig oft beinhaltet. Diese Zeichenfolge wird gefolgt von " - ". Anschliessend muss wieder eine Zeichenfolge folgen die die Zeichen a bis z und A bis Z beliebig oft beinhaltet.
Die runden Klammern () bewirken eine Gruppierung - und eine Speicherung in temporären Variablen. Im "Ersetzen durch" werden diese Variable dann verwendet: Ersetze den Term durch die zweite gefundene
Zeichenfolge, gefolgt von " - " und der ersten gefundenen Zeichenfolge.
Sollen deine zu suchenden Strings mehr als Buchstaben - z.B. auch Ziffern enthalten, so sind die entsprechenden Suchausdrücke zu erweitern (im Beispiel mit Ziffern: ([a-zA-Z0-9]*)
Im Multi-Rename Tool (ctrl-M) folgendes Vorgehen:
Umbenennmaske/Dateiname: [N]
Suchen und Ersetzen:
Suchen nach: ([a-zA-Z]*) - ([a-zA-Z]*)
Ersetzen durch: $2 - $1
Regex: aktiviert
Subst: deaktiviert
Der Regex ([a-zA-Z]*) - ([a-zA-Z]*) bedeutet:
Suche nach einer Zeichenfolge die die Zeichen a bis z und A bis Z beliebig oft beinhaltet. Diese Zeichenfolge wird gefolgt von " - ". Anschliessend muss wieder eine Zeichenfolge folgen die die Zeichen a bis z und A bis Z beliebig oft beinhaltet.
Die runden Klammern () bewirken eine Gruppierung - und eine Speicherung in temporären Variablen. Im "Ersetzen durch" werden diese Variable dann verwendet: Ersetze den Term durch die zweite gefundene
Zeichenfolge, gefolgt von " - " und der ersten gefundenen Zeichenfolge.
Sollen deine zu suchenden Strings mehr als Buchstaben - z.B. auch Ziffern enthalten, so sind die entsprechenden Suchausdrücke zu erweitern (im Beispiel mit Ziffern: ([a-zA-Z0-9]*)
- ghisler(Author)
- Site Admin
- Posts: 50843
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Falls die Dateien auch Sonderzeichen enthalten, würde ich folgende Einstellungen vorschlagen (ausprobiert!):
Suchen nach: (.*) - (.*)\.(.*)
Ersetzen durch: $2 - $1.$3
Regex: aktiviert
"." bedeutet ein beliebiges Zeichen. .* also beliebige Zeichen, gefolgt von Leerschlag Strich Leerschlag. Dann wieder beliebige Zeichen, ein Punkt (der \ verhindert, dass der Punkt als beliebiges Zeichen erkannt wird) und anschliessend die Endung (z.B. mp3, ac3 etc).
Suchen nach: (.*) - (.*)\.(.*)
Ersetzen durch: $2 - $1.$3
Regex: aktiviert
"." bedeutet ein beliebiges Zeichen. .* also beliebige Zeichen, gefolgt von Leerschlag Strich Leerschlag. Dann wieder beliebige Zeichen, ein Punkt (der \ verhindert, dass der Punkt als beliebiges Zeichen erkannt wird) und anschliessend die Endung (z.B. mp3, ac3 etc).
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
-
- Junior Member
- Posts: 6
- Joined: 2007-01-03, 20:36 UTC
- Location: Nürnberg
Danke für Euere Hilfe. Jedoch komme ich weder mit dem einen noch dem anderen weiter.
Bei Hoppfrosch sieht es so aus:
Original Ergebnis
Afroman - because i got high.mpg = Because - Afroman i got high.mpg
Alan Price - the house that jack built.mpg = Alan the - price house that jack built.mpg
B2K & P Diddy - bump bump bump.mp3 = B2K & P bump - Diddy bump bump.mp3
Ashanti & ja rule - Mesmerize.mp3 = Ashanti & ja mesmerize - rule.mp3
Bei Gishler gibt es kein Ergebnis.
Könnt Ihr mir nochmal helfen ?
Ich habe die aktuelle Version 7b2 installiert.
Kann man hier einen allgemeingültigen String entwerfen ?
Alex
Bei Hoppfrosch sieht es so aus:
Original Ergebnis
Afroman - because i got high.mpg = Because - Afroman i got high.mpg
Alan Price - the house that jack built.mpg = Alan the - price house that jack built.mpg
B2K & P Diddy - bump bump bump.mp3 = B2K & P bump - Diddy bump bump.mp3
Ashanti & ja rule - Mesmerize.mp3 = Ashanti & ja mesmerize - rule.mp3
Bei Gishler gibt es kein Ergebnis.
Könnt Ihr mir nochmal helfen ?
Ich habe die aktuelle Version 7b2 installiert.
Kann man hier einen allgemeingültigen String entwerfen ?
Alex
-
- Junior Member
- Posts: 6
- Joined: 2007-01-03, 20:36 UTC
- Location: Nürnberg
Das ist hier natürlich auch der Fall und es funktioniert.besserwisser wrote:Das Problem ist, daß die Dateien aus einer unterschiedlichen Anzahl von Worten bestehen. Vor und nach dem MINUS.
Noch allgemeiner als die Obige?Ich tüftle schon die ganze Zeit rum, komme aber nicht auf eine allgemeingültige Formel.
-
- Junior Member
- Posts: 6
- Joined: 2007-01-03, 20:36 UTC
- Location: Nürnberg
Warum ist bei mir das Ergebnis bei Eingabe des Strings von Hoppfrosch anders ?
([a-zA-Z]*) - ([a-zA-Z]*) $2 - $1
REGEX ist auch angehakt. SUBST nicht.
Afroman - because i got high.mpg = Because - Afroman i got high.mpg
Ergebnis sollte sein:
because i got high - Afroman.
Warum klappt das nicht ?
Hat es was mit der Betaversion zu tun ?
([a-zA-Z]*) - ([a-zA-Z]*) $2 - $1
REGEX ist auch angehakt. SUBST nicht.
Afroman - because i got high.mpg = Because - Afroman i got high.mpg
Ergebnis sollte sein:
because i got high - Afroman.
Warum klappt das nicht ?
Hat es was mit der Betaversion zu tun ?
-
- Junior Member
- Posts: 6
- Joined: 2007-01-03, 20:36 UTC
- Location: Nürnberg
Nein.besserwisser wrote: Kann man auch noch eine Verschiebefunktion in einen anderen Ordner der geänderten Datensätze mit einbauen ?
Zumindest nicht, wie man sich das wünschen würde.
Bisher gibt es nur Workarounds.
http://www.ghisler.ch/board/viewtopic.php?p=84205#84205
Stitscher
- hoppfrosch
- Junior Member
- Posts: 67
- Joined: 2004-10-20, 05:39 UTC
Tja, dass die Namensbestandteile auch Leerzeichen beinhalten, spiegelt sich so auch nicht in dem von mir genanten Regex nieder.
Wenn Leerzeichen in den Zeichenfolgen beinhaltet sein dürfen, dann müssen auch die "Klassen" (d.h der Term in den eckigen Klammern) Leerzeichen beinhalten.
([a-zA-Z ]*) - ([a-zA-Z ]*)
Merke: Alle Zeichen die in der Zeichenfolge zulässig sein sollen, müssen auch in den eckigen Klammern auftauchen ...
Ghisler macht mit seinem Regex-Ausdruck folgendes:
Sein Term (.*) - (.*)\.(.*) bedeutet:
* '.' heisst: Jedes beliebige Zeichen
* '.*' heisst: Jedes beliebige Zeichen beliebig oft
* '(.*)' speichere die Zeichenfolge "Jedes beliebige Zeichen beliebig oft" in einer Variable
* '(.*) - (.*)\.(.*)': Die erste Zeichenfolge "Jedes beliebige Zeichen beliebig oft" geht bis zur Zeichenfolge " - ". Die zweite Zeichenfolge "Jedes beliebige Zeichen beliebig oft" geht bis zum Punkt (da '.' in Regex bedeutet "Jedes beliebige Zeichen" muss man, wenn man einen Punkt im String finden will, '\.' verwenden ...). Die dritte Zeichenfolge "Jedes beliebige Zeichen beliebig oft" geht vom Punkt bis zum Ende und stellt die Extension dar
Ghislers Ansatz ist für das Problem sicher der bessere, da man sich nicht darum kümmern muss, was für Zeichen in den Zeichenfolgen enthalten sind: der gesamtstring muss nur dem Muster folgen: "i_r gend was - irg endwas.irgend was3"
Mein Vorschlag bietet hingegen bessere Kontrollmöglichkeiten über die Zusammensetzung des "Irgendwas" ...
P.S: Auch mein Vorschlag ist getestet
Wenn Leerzeichen in den Zeichenfolgen beinhaltet sein dürfen, dann müssen auch die "Klassen" (d.h der Term in den eckigen Klammern) Leerzeichen beinhalten.
([a-zA-Z ]*) - ([a-zA-Z ]*)
Merke: Alle Zeichen die in der Zeichenfolge zulässig sein sollen, müssen auch in den eckigen Klammern auftauchen ...
Ghisler macht mit seinem Regex-Ausdruck folgendes:
Sein Term (.*) - (.*)\.(.*) bedeutet:
* '.' heisst: Jedes beliebige Zeichen
* '.*' heisst: Jedes beliebige Zeichen beliebig oft
* '(.*)' speichere die Zeichenfolge "Jedes beliebige Zeichen beliebig oft" in einer Variable
* '(.*) - (.*)\.(.*)': Die erste Zeichenfolge "Jedes beliebige Zeichen beliebig oft" geht bis zur Zeichenfolge " - ". Die zweite Zeichenfolge "Jedes beliebige Zeichen beliebig oft" geht bis zum Punkt (da '.' in Regex bedeutet "Jedes beliebige Zeichen" muss man, wenn man einen Punkt im String finden will, '\.' verwenden ...). Die dritte Zeichenfolge "Jedes beliebige Zeichen beliebig oft" geht vom Punkt bis zum Ende und stellt die Extension dar
Ghislers Ansatz ist für das Problem sicher der bessere, da man sich nicht darum kümmern muss, was für Zeichen in den Zeichenfolgen enthalten sind: der gesamtstring muss nur dem Muster folgen: "i_r gend was - irg endwas.irgend was3"
Mein Vorschlag bietet hingegen bessere Kontrollmöglichkeiten über die Zusammensetzung des "Irgendwas" ...
P.S: Auch mein Vorschlag ist getestet