MUT: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
hunter81
Junior Member
Junior Member
Posts: 11
Joined: 2017-12-03, 14:36 UTC

MUT: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *hunter81 »

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
User avatar
sqa_wizard
Power Member
Power Member
Posts: 3862
Joined: 2003-02-06, 11:41 UTC
Location: Germany

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *sqa_wizard »

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]
#5767 Personal license
hunter81
Junior Member
Junior Member
Posts: 11
Joined: 2017-12-03, 14:36 UTC

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *hunter81 »

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 ?
User avatar
sqa_wizard
Power Member
Power Member
Posts: 3862
Joined: 2003-02-06, 11:41 UTC
Location: Germany

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *sqa_wizard »

Für dein Beispiel abc_2020_versionxyz.doc ==> 2020_abc_versionxyz.doc

Suchen nach: (.*)_(\d{4})_(.*)
Ersetzen durch: $2_$1_$3
[x] RegEx
#5767 Personal license
hunter81
Junior Member
Junior Member
Posts: 11
Joined: 2017-12-03, 14:36 UTC

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *hunter81 »

Super !!! Vielen Dank :-)
Zarsten
Junior Member
Junior Member
Posts: 12
Joined: 2017-08-22, 14:19 UTC

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *Zarsten »

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.
User avatar
Stefan2
Power Member
Power Member
Posts: 4158
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *Stefan2 »

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:
?
?
?




 
Zarsten
Junior Member
Junior Member
Posts: 12
Joined: 2017-08-22, 14:19 UTC

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *Zarsten »

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
Zarsten
Junior Member
Junior Member
Posts: 12
Joined: 2017-08-22, 14:19 UTC

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *Zarsten »

Hallo Stefan2,

sollte eigentlich davor 😉
User avatar
Stefan2
Power Member
Power Member
Posts: 4158
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *Stefan2 »

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?


 
Zarsten
Junior Member
Junior Member
Posts: 12
Joined: 2017-08-22, 14:19 UTC

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *Zarsten »

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.
User avatar
Stefan2
Power Member
Power Member
Posts: 4158
Joined: 2007-09-13, 22:20 UTC
Location: Europa

MUT: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *Stefan2 »

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


 
Zarsten
Junior Member
Junior Member
Posts: 12
Joined: 2017-08-22, 14:19 UTC

Re: Dateinamen mit Jahreszahlen: wie die Jahreszahl nach vorne bringen?

Post by *Zarsten »

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.
Post Reply