MUT: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Moderators: Hacker, Stefan2, white
MUT: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Hallo,
ich habe Unterlagen bekommen, in denen im Dateinamen eine Jahreszahl enthalten ist.
Bsp. Abschlussarbeit_2020.doc
Ich würde gerne mit dem TC die Jahreszahl nach vorne bringen
2020_Abschlussarbeit.doc
Mit welchem Befehl wäre das möglich?
Die Jahreszahl beinhaltet auch JAhreszahlen aus 19xx.
Vielen Dank für eure Hilfe
Subject angepasst vom Moderator
ich habe Unterlagen bekommen, in denen im Dateinamen eine Jahreszahl enthalten ist.
Bsp. Abschlussarbeit_2020.doc
Ich würde gerne mit dem TC die Jahreszahl nach vorne bringen
2020_Abschlussarbeit.doc
Mit welchem Befehl wäre das möglich?
Die Jahreszahl beinhaltet auch JAhreszahlen aus 19xx.
Vielen Dank für eure Hilfe
Subject angepasst vom Moderator
- sqa_wizard
- Power Member
- Posts: 3893
- Joined: 2003-02-06, 11:41 UTC
- Location: Germany
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Dazu verwendet man das Mehrfach-Umbenenn-Tool.
Du möchtest also ab dem 4.Zeichen von hinten bis zum 1.Zeichen von hinten die Jahreszahl
Dann ein "_"
Gefolgt vom ersten Zeichen bis zum 6.Zeichen von hinten.
Trage also in die Umbenennmaske ein:
[N-4-1]_[N1--6]
Du möchtest also ab dem 4.Zeichen von hinten bis zum 1.Zeichen von hinten die Jahreszahl
Dann ein "_"
Gefolgt vom ersten Zeichen bis zum 6.Zeichen von hinten.
Trage also in die Umbenennmaske ein:
[N-4-1]_[N1--6]
#5767 Personal license
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
okay vielen Dank, und wenn hinter der Jahreszahl noch was kommen würde ? Bsp. abc_2020_versionxyz.doc, also wenn der Wert variabel im Dateinamen enthalten ist ?
- sqa_wizard
- Power Member
- Posts: 3893
- Joined: 2003-02-06, 11:41 UTC
- Location: Germany
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Für dein Beispiel abc_2020_versionxyz.doc ==> 2020_abc_versionxyz.doc
Suchen nach: (.*)_(\d{4})_(.*)
Ersetzen durch: $2_$1_$3
[x] RegEx
Suchen nach: (.*)_(\d{4})_(.*)
Ersetzen durch: $2_$1_$3
[x] RegEx
#5767 Personal license
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Super !!! Vielen Dank 

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Moin zusammen,
zu der Antwort von sqa_wizard habe ich noch Fragen.
Erstmal ein Danke an alle, die hier im Forum echt klasse Hilfe leisten.
Mein Dilemma:
Ähnlich wie hunter81 habe ich diverse Dateinamen die wie z.B.
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001
Buch 12. Jahrgang Nr. 4 Juni 1957_Grau_0001
Buch 13. Jahrgang Nr. 6 September - Oktober 1958_Grau_0001
lauten.
Jetzt möchte ich folgendes:
Den Teil xx. Jahrgang löschen und die Jahreszahl hinter Buch gefolgt von Nr. X xxxxx.0001 stellen.
Mit RegEx komme ich heute zum ersten Mal in Berührung.
Mit
Suche Nach: \d{2}. Jahrgang konnte ich den ersten Teil lösen.
Ergebnis:
Buch Nr. 5 Juli-August 1956_Grau_0001
Buch Nr. 4 Juni 1957_Grau_0001
Buch Nr. 6 September - Oktober 1958_Grau_0001
Mein
Suche nach: (.*)(\d{4})_(.*)
Ersetzen durch:Buch $2 $1 $3
[x] RegEx
[x] [E]
[x] Subst.
bekomme ich die Jahreszahl hinter das Buch, aber bei dem Rest dahinter habe ich wieder den Ausdruck Buch.
Wie bekomme ich den zweiten Ausdruck Buch weg bzw. wie kommt er gar nicht erst hinein?
Eine weitere Unterteilung des Dateinamens ist mir nicht geglückt
Wie kann ich die Teilausdrücke in diesem Fall nutzen? Gehen evtl. beide Schritte in einem?
Vielen Dank jetzt schon.
zu der Antwort von sqa_wizard habe ich noch Fragen.
Erstmal ein Danke an alle, die hier im Forum echt klasse Hilfe leisten.
Mein Dilemma:
Ähnlich wie hunter81 habe ich diverse Dateinamen die wie z.B.
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001
Buch 12. Jahrgang Nr. 4 Juni 1957_Grau_0001
Buch 13. Jahrgang Nr. 6 September - Oktober 1958_Grau_0001
lauten.
Jetzt möchte ich folgendes:
Den Teil xx. Jahrgang löschen und die Jahreszahl hinter Buch gefolgt von Nr. X xxxxx.0001 stellen.
Mit RegEx komme ich heute zum ersten Mal in Berührung.
Mit
Suche Nach: \d{2}. Jahrgang konnte ich den ersten Teil lösen.
Ergebnis:
Buch Nr. 5 Juli-August 1956_Grau_0001
Buch Nr. 4 Juni 1957_Grau_0001
Buch Nr. 6 September - Oktober 1958_Grau_0001
Mein
Suche nach: (.*)(\d{4})_(.*)
Ersetzen durch:Buch $2 $1 $3
[x] RegEx
[x] [E]
[x] Subst.
bekomme ich die Jahreszahl hinter das Buch, aber bei dem Rest dahinter habe ich wieder den Ausdruck Buch.
Wie bekomme ich den zweiten Ausdruck Buch weg bzw. wie kommt er gar nicht erst hinein?
Eine weitere Unterteilung des Dateinamens ist mir nicht geglückt
Wie kann ich die Teilausdrücke in diesem Fall nutzen? Gehen evtl. beide Schritte in einem?
Vielen Dank jetzt schon.
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Hi.
Zum besseren Verständnis ...
Vorher:
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001
Buch 12. Jahrgang Nr. 4 Juni 1957_Grau_0001
Buch 13. Jahrgang Nr. 6 September - Oktober 1958_Grau_0001
Nachher:
?
?
?
Zum besseren Verständnis ...
Vorher:
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001
Buch 12. Jahrgang Nr. 4 Juni 1957_Grau_0001
Buch 13. Jahrgang Nr. 6 September - Oktober 1958_Grau_0001
Nachher:
?
?
?
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Gewünschtes Ergebnis:
Buch 1956 Nr. 5 Juli-August_Grau_0001
Buch 1957 Nr. 4 Juni_Grau_0001
Buch 1958 Nr. 6 September - Oktober_Grau_0001
Buch 1956 Nr. 5 Juli-August_Grau_0001
Buch 1957 Nr. 4 Juni_Grau_0001
Buch 1958 Nr. 6 September - Oktober_Grau_0001
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Hallo Stefan2,
sollte eigentlich davor
sollte eigentlich davor
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Danke.
Habe gerade wenig Zeit, aber bestimmt kann dir ein Anderer helfen (ansonsten später, heut Abend, morgen)
Frage: wie kann man denn die Jahreszahl erkennen?
"1956_Grau_0001"
Steht die immer genau vor dem Wort "_Grau"?
Oder immer nach dem zweiten Unterstrich von hinten?
"Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext"
Oder immer nach dem sechsten Leerzeichen von vorne (wenn man die Leerzeichen zwischen den Monaten ignoriert)?
Buch 12. Jahrgang Nr. 4 Juni 1957_Grau_0001
Buch 13. Jahrgang Nr. 6 September-Oktober 1958_Grau_0001
Oder, (etwas schwieriger, da wohl nur über ein Skript) immer nach einem Monatsnamen
Aber bestimmt hast du einige verschiedene Büchernamen, und unsere Lösung wird wohl nur auf dieses eine Beispiel passen.
Kannst du noch mehr Vorher/Nachher-Beispiele posten?
Habe gerade wenig Zeit, aber bestimmt kann dir ein Anderer helfen (ansonsten später, heut Abend, morgen)
Frage: wie kann man denn die Jahreszahl erkennen?
"1956_Grau_0001"
Steht die immer genau vor dem Wort "_Grau"?
Oder immer nach dem zweiten Unterstrich von hinten?
"Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext"
Oder immer nach dem sechsten Leerzeichen von vorne (wenn man die Leerzeichen zwischen den Monaten ignoriert)?
Buch 12. Jahrgang Nr. 4 Juni 1957_Grau_0001
Buch 13. Jahrgang Nr. 6 September-Oktober 1958_Grau_0001
Oder, (etwas schwieriger, da wohl nur über ein Skript) immer nach einem Monatsnamen

Aber bestimmt hast du einige verschiedene Büchernamen, und unsere Lösung wird wohl nur auf dieses eine Beispiel passen.
Kannst du noch mehr Vorher/Nachher-Beispiele posten?
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Der Zähler am Ende ist immer Fünfstellig, habe es hier falsch wiedergegeben.
(\d{4}) hat bisher funktioniert.
Die Monate sind unterschiedlich und es steht auch mal _RGB_00001 oder _SW_00002 hinter dem Namen.
Das wäre aber, wie angedeutet, immer der zweite Unterstrich von hinten.
Scripte verstehe ich kaum (anwenden kann ich sie) und hoffe wir finden eine Lösung ohne.
Der Anfang der Dateien ist immer ähnlich.
Simpel ausgedrückt. Suche vierstellige Zahl und verschiebe sie hinter/vor das n. Zeichen des Dateinamens.
Im MUT kann ich das bestimmt für andere Dateinamen anpassen.
Es sind sehr vieler Ordner / Dateien.
Ich bin froh, dass du dich der Sache annimmst. Also nicht Zeitkritisch.
(\d{4}) hat bisher funktioniert.
Die Monate sind unterschiedlich und es steht auch mal _RGB_00001 oder _SW_00002 hinter dem Namen.
Das wäre aber, wie angedeutet, immer der zweite Unterstrich von hinten.
Scripte verstehe ich kaum (anwenden kann ich sie) und hoffe wir finden eine Lösung ohne.
Der Anfang der Dateien ist immer ähnlich.
Simpel ausgedrückt. Suche vierstellige Zahl und verschiebe sie hinter/vor das n. Zeichen des Dateinamens.
Im MUT kann ich das bestimmt für andere Dateinamen anpassen.
Es sind sehr vieler Ordner / Dateien.
Ich bin froh, dass du dich der Sache annimmst. Also nicht Zeitkritisch.
MUT: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
quick&dirty, funktioklappt das:
VON:
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
Buch 12. Jahrgang Nr. 4 Juni 1957_Grau_0001.ext
Buch 13. Jahrgang Nr. 6 September - Oktober 1958_Grau_0001.ext
ZU:
Buch 1956 Nr. 5 Juli-August_Grau_0001.ext
Buch 1957 Nr. 4 Juni_Grau_0001.ext
Buch 1958 Nr. 6 September - Oktober_Grau_0001.ext
Die Jahreszahl steht immer vor dem zweiten Unterstrich von hinten.
Unter-Ausdruck (oder auch Teil-Ausdruck) 1:
Suche das erste Wort/die Wörter am Anfang "non-greedy" bis zum Leerzeichen, gefolgt von einer Ziffer, speichere in $1
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
^(.+?)\s
Unterausdruck 2:
Suche dann zwei Ziffern, Punkt und "Jahrgang" bis zum Leerzeichen, speichere das nicht, verwerfe es
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
\d\d\.\sJahrgang\s
(
oder \d+ anstatt \d\d um auch 1-bis-mehrere Ziffern zu "matchen": 1. , 12. , 123,
Das Große Buch 1. Jahrgang Nr. 2 Juni 1960_RGB_0001.ext
Das Große Buch 1960 Nr. 2 Juni _RGB_0001.ext
)
Unterausdruck 3:
Suche dann den Rest bis zum Leerzeichen vor dem Jahr , $2
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
(.+?)\s
Unterausdruck 4:
Suche dann vier Ziffern , $3
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
(\d{4})
Unterausdruck 5:
Suche dann einen Unterstrich und weiteres , non-greedy bis zum nächsten Unterstrich , $4
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
(_.+?)
Unterausdruck 6:
Suche dann einen Unterstrich und weiteres bis zum Ende , $5
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
(_.+)$
ALSO...
SUCHE Ausdruck (Expression):
^(.+?)\s\d\d\.\sJahrgang\s(.+?)\s(\d{4})(_.+?)(_.+)$
ERSETZE durch:
$1 $3 $2 $4 $5
[x]RegEx
Bzw.
^(.+?)\s\d\d\.\sJahrgang\s(.+?)\s(\d{4})(_.+_.+)$
$1 $3 $2 $4
Oder in Voraussicht für Ein-bis-Mehrstellige Jahrgangs-Ziffern:
^(.+?)\s\d+\.\sJahrgang\s(.+?)\s(\d{4})(_.+?_.+)$
$1 $3 $2 $4
Erklärung
^ - finde am Anfang
. - ein beliebiges Zeichen ("beliebig" findet natürlich auch auf einen Punkt)
+ - finde "ein-oder-mehr" Vorkommen des Ausdrucks (* würde kein-oder-mehrmal" suchen)
? - hier: non-greedy , sei nicht zu gierig (versuchs mal ohne ums zu verstehen)
\. - einen tatsächlichen Punkt !
\s - ein Leerzeichen
\d - eine Ziffer
(...) - hier: speichere den Treffer zur Wiederverwendung mit $1, $2....
$ - finde am Ende
Jeder Unterausdruck versucht alles zu finden bis zum nächsten angegebenen Unterausdruck .
Der Unterausdruck 3 sucht also so lange, bis er den Ausdruck "\d{4})" vom Unterausdruck 4 findet.
Im offenen MUT die F1-Taste drücken und bei Regular Expressions weiter lesen....
Oder dort >>> Reguläre Ausdrücke Anleitung / Regular expressions Tutorial
viewtopic.php?p=323986#p323986
VON:
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
Buch 12. Jahrgang Nr. 4 Juni 1957_Grau_0001.ext
Buch 13. Jahrgang Nr. 6 September - Oktober 1958_Grau_0001.ext
ZU:
Buch 1956 Nr. 5 Juli-August_Grau_0001.ext
Buch 1957 Nr. 4 Juni_Grau_0001.ext
Buch 1958 Nr. 6 September - Oktober_Grau_0001.ext
Die Jahreszahl steht immer vor dem zweiten Unterstrich von hinten.
Unter-Ausdruck (oder auch Teil-Ausdruck) 1:
Suche das erste Wort/die Wörter am Anfang "non-greedy" bis zum Leerzeichen, gefolgt von einer Ziffer, speichere in $1
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
^(.+?)\s
Unterausdruck 2:
Suche dann zwei Ziffern, Punkt und "Jahrgang" bis zum Leerzeichen, speichere das nicht, verwerfe es
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
\d\d\.\sJahrgang\s
(
oder \d+ anstatt \d\d um auch 1-bis-mehrere Ziffern zu "matchen": 1. , 12. , 123,
Das Große Buch 1. Jahrgang Nr. 2 Juni 1960_RGB_0001.ext
Das Große Buch 1960 Nr. 2 Juni _RGB_0001.ext
)
Unterausdruck 3:
Suche dann den Rest bis zum Leerzeichen vor dem Jahr , $2
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
(.+?)\s
Unterausdruck 4:
Suche dann vier Ziffern , $3
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
(\d{4})
Unterausdruck 5:
Suche dann einen Unterstrich und weiteres , non-greedy bis zum nächsten Unterstrich , $4
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
(_.+?)
Unterausdruck 6:
Suche dann einen Unterstrich und weiteres bis zum Ende , $5
Buch 11. Jahrgang Nr. 5 Juli-August 1956_Grau_0001.ext
(_.+)$
ALSO...
SUCHE Ausdruck (Expression):
^(.+?)\s\d\d\.\sJahrgang\s(.+?)\s(\d{4})(_.+?)(_.+)$
ERSETZE durch:
$1 $3 $2 $4 $5
[x]RegEx
Bzw.
^(.+?)\s\d\d\.\sJahrgang\s(.+?)\s(\d{4})(_.+_.+)$
$1 $3 $2 $4
Oder in Voraussicht für Ein-bis-Mehrstellige Jahrgangs-Ziffern:
^(.+?)\s\d+\.\sJahrgang\s(.+?)\s(\d{4})(_.+?_.+)$
$1 $3 $2 $4

Erklärung
^ - finde am Anfang
. - ein beliebiges Zeichen ("beliebig" findet natürlich auch auf einen Punkt)
+ - finde "ein-oder-mehr" Vorkommen des Ausdrucks (* würde kein-oder-mehrmal" suchen)
? - hier: non-greedy , sei nicht zu gierig (versuchs mal ohne ums zu verstehen)
\. - einen tatsächlichen Punkt !
\s - ein Leerzeichen
\d - eine Ziffer
(...) - hier: speichere den Treffer zur Wiederverwendung mit $1, $2....
$ - finde am Ende
Jeder Unterausdruck versucht alles zu finden bis zum nächsten angegebenen Unterausdruck .
Der Unterausdruck 3 sucht also so lange, bis er den Ausdruck "\d{4})" vom Unterausdruck 4 findet.
Im offenen MUT die F1-Taste drücken und bei Regular Expressions weiter lesen....
Oder dort >>> Reguläre Ausdrücke Anleitung / Regular expressions Tutorial
viewtopic.php?p=323986#p323986
Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?
Supergenial !!!
Danke
TOP.
? non-greedy hat keinen Unterschied gemacht. Werde es bei anderen Gelegenheiten im Hinterkopf behalten.
Danke auch für die Erklärung. Es wir immens helfen den Part "RegEx" besser zu verstehen.
Liebe Grüße und happy Weekend.
Danke
? non-greedy hat keinen Unterschied gemacht. Werde es bei anderen Gelegenheiten im Hinterkopf behalten.
Danke auch für die Erklärung. Es wir immens helfen den Part "RegEx" besser zu verstehen.
Liebe Grüße und happy Weekend.