Seite 1 von 3

Umbenennen: an beliebiger Stelle einfügen

Verfasst: 28. Apr 2010 10:41
von Joerg765
Hallo,

weiß jemand einen Code für das Einfügen an X. Stelle ?

Mit dem folgenden CODE kann man ja eine gewünschte Anzahl von Zeichen VOR dem Dateinamen entfernen:

Rename REGEXP PATTERN ".(.+)(\..*)#{dlgstring|Anzahl}" TO "\1\2" AUTORENAME

Anstatt diese Zeichen zu entfernen, sollen jetzt an dieser Stelle die neuen Zeichen eingefügt werden,
und die alten natürlich behalten werden. Ich habe herumprobiert, aber komme leider zu keinem Ergebnis.

Es soll sich also ein Eingabefeld öffnen, indem man nach der gewünschten Stelle gefragt wird,
und dann ein Eingabefeld, in dem man die gewünschten Zeichen eingeben kann.

DANKE schon mal, JÖRG.

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 3. Mai 2010 03:22
von abr
Hallo Jörg,

probiere doch mal diese beiden Ansätze mal, ob das in die richtige Richtung geht.


Bei folgendem Code musst Du eine zu den gewünschten Stellen analog ANzahl an Punkten "." von links eingeben, wobei drei Punkte der Defaultwert sind. Ein einfaches Enter ohne weitere Punkte würde als nach der 3. Stelle den String einfügen, der in diesem Code in der zweiten Abfrage eingegeben wird.

Code: Alles auswählen

@set  X = ({dlgstring|Enter one . for each character from left (default is 3)|...})
@set Word = {dlgstring|Enter Text to insert|Some Text}

Rename REGEXP PATTERN "{$X}(.*)" TO "\1{$Word}\2"
Bei dem zweiten Code habe ich die Information, daß der Parameter "$Word" vor der Dateinamenerweiterung eingegeben wird (was eigentlich nicht das ist, was Du wolltest, aber vielleicht ist es trotzdem ausbaufähig). Der zweite Teil funktioniert laut Aussage des Autoren erstmal nur, wenn der Stelle "#" im Code ein fester Wert zugewiesen wird (dann würde $Num ignoriert). Also vielleicht am
besten mal ein bisschen damit herumspielen.

Code: Alles auswählen

@set Num = ({dlgstring|Enter the number of characters from right not including extension characters (default is 5)|5})
@set Word = {dlgstring|Enter Text to insert|Some Text}
Rename REGEXP PATTERN "(.*)(\..*)" TO "\1{$Word}\2"
Rename REGEXP PATTERN "(.*)(.+)({$Word})(.*)(\..*)#{$Num}" TO "\1{$Word}\2\4\5"

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 3. Mai 2010 23:57
von Kundal
Der erste Button funktioniert grundsätzlich gut, wenn auch das Eintippen der Punkte nicht gerade komfortabel ist.

Allerdings werden bei der Eingabe Leerzeichen am Anfang und Ende ignoriert.

Wenn ich also " Some Text " eingebe, wird nur "Some Text" eingefügt.

Vielleicht weiß jemand, wie man das ändern kann.

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 4. Mai 2010 00:19
von abr
Kundal hat geschrieben:Der erste Button funktioniert grundsätzlich gut, wenn auch das Eintippen der Punkte nicht gerade komfortabel ist.
Allerdings werden bei der Eingabe Leerzeichen am Anfang und Ende ignoriert.
Wenn ich also " Some Text " eingebe, wird nur "Some Text" eingefügt.
Vielleicht weiß jemand, wie man das ändern kann.
Im anderen Forum, wo ich um etwas Hilfe bat (ich selbst hab kaum Ahnung von REGEX), wurde das auch festgestellt & es kann sehr gut sein, daß bald eine verbesserte Version des Regexes vorgeschlagen wird, die ich dann umgehend hierher weiter leiten würde. Interessanterweise war diese Anfrage nämlich gar nicht mal so trivial.

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 4. Mai 2010 08:59
von Joerg765
Das mit den Leerzeichen war mir auch aufgefallen, deshalb habe ich den CODE etwas abgeändert,
so funktioniert es jetzt bei mir auch MIT Leerzeichen:

Code: Alles auswählen

@set  X = ({dlgstring|Einagbe: Für jeden Punkt eine Stelle von VORNE})
Rename REGEXP PATTERN "{$X}(.*)" TO "\1{dlgstring|Eingabe}\2"
@NODESELECT
Hier habe ich allerdings die bereits vorgegebenen 3 Punkte entfernt, da es mir so persönlich besser gefällt.

JÖRG

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 4. Mai 2010 11:08
von Kundal
@Jörg:
Funktioniert erstmal Super.
Wenn du allerdings mehrere Dateien und Ordner auswählst, bekommst du jetzt für jede Datei ein neues Eingabefenster.
Dabei wird nur der Eintrag im ersten Fenster berücksichtigt, die anderen kann man abbrechen, bestätigen oder was eintragen ohne das es was bewirkt.
Am Ende hat's dann funktioniert. Bei vielen Dateien ist das natürlich nervig.
Kriegst du das vielleicht auch noch hin?
Dann wäre der Schalter eine Bereicherung für die "Schaltersammlung" im Code Repository.

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 4. Mai 2010 13:09
von Joerg765
Oh, das ist mir nicht aufgefallen, hatte es nur an einzelnen Dateien getestet.
Ich bastel aber daran weiter herum, vielleicht bekomme ich noch eine funktionierende Möglichkeit.

Ansonsten, wenn einer weiterhelfen kann, immer gerne ...

JÖRG.

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 4. Mai 2010 18:17
von abr
Joerg765 hat geschrieben:Das mit den Leerzeichen war mir auch aufgefallen, deshalb habe ich den CODE etwas abgeändert,
so funktioniert es jetzt bei mir auch MIT Leerzeichen:[
Wenn es ok ist, verlinke ich den Code mal im englischen Forum, da das jemand dort auch schon festgestellt hat mit den Leerzeichen.

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 4. Mai 2010 18:46
von Joerg765
Hallo abr,

DANKE erstmal für Deine Hilfe, deine Codes sind ja schon mal ein guter Anfang.

Wenn Du meinen CODE allerdings ins englische Forum weitergibst, dann schreibe bitte dazu,
daß es so nur mit einzelnen Dateien oder Ordnern funktioniert.

Übrigends war es dort auch kundal, der festgestellt hat, daß es nicht mit Leerzeichen funktioniert.

JÖRG

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 4. Mai 2010 19:41
von Joerg765
Ich glaube, ich habe es. Wenn mich nicht alles täuscht, dann ist es eigentlich ganz einfach:

Code: Alles auswählen

Rename REGEXP PATTERN "({dlgstring|Anzahl})(.*)" TO "\1{dlgstring|Eingabe}\2"
Bei mir funktioniert es soweit. MIT Leerzeichen UND bei mehreren gewählten Dateien UND Ordnern.

Jetzt müssen wir nur noch die Punkte durch Zahlen ersetzen können, dann wäre es perfekt.

JÖRG

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 4. Mai 2010 20:27
von Kundal
@Joerg765
WOW!
Auf den hätte ich eigentlich auch selbst kommen können. Ich tu mich nur ein bisschen schwer mit den REGEXP's.
Genial einfache Lösung die es auch bei mir tut.
Wie du schon sagst, wenn wir jetzt noch eine Zahl in "Anzahl Punkte" übersetzt bekommen...

PS: Stellst du dein Werk in der "Schaltersammlung" vor? Ich integriere es dann in den Menübutton dort.
Wenn's recht ist, stelle ich deine Lösung (mit Nennung deiner Autorschaft) auch im englischen Forum vor. Da ist das Thema noch ungelöst.

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 5. Mai 2010 13:57
von Joerg765
Ich habe jetzt eine Lösung gefunden.
Allerdings muß man hier die Stelle eingeben, NACH der man etwas einfügen möchte, und nicht AN welcher Stelle.

Dies ist zwar vom CODE her nicht optimal, aber das Ergebnis ist so, wie ich es mir vorgestellt habe.

Ich habe einfach mehrere CODEs zusammengelegt, dabei habe ich mir folgendes überlegt:

1. gewünschte Anzahl von Zeichen nach hinten verschieben
2. gewünschte neue Zeichen vorne eingeben
3. die vorher verschobene Anzahl von Zeichen wieder von hinten nach vorne verschieben

Das hat aber so nicht funktioniert. Sobald die gewünschten neuen Zeichen eingegeben wurden,
wurde daraus ja praktisch ein ganz neuer Name.
Dieser wurde dann aber zum wieder nach vorne verschieben nicht mehr als Name erkannt.
Anstatt also gleich den gewünschten neuen Namen einzugeben, laß ich den Dateinamen erstmal
mit einem festen NAMEN (JOERG765) umbenennen. Danach kann der CODE ihn mit SELECT
wieder aufgreifen und die vorher verschobenen Zeichen wieder nach vorne verschieben.
Zum Schluß muß natürlich noch das JOER765 durch die gewünschten neuen Zeichen ersetzt werden.
Und siehe da, es funktioniert.

Mit diesem CODE lassen sich gewünschte Zeichen NACH beliebiger Stelle von VORNE einfügen:

Code: Alles auswählen

@set X = {dlgstring|Anzahl}
Rename REGEXP PATTERN "(.)(.+)#{$X}" TO "\2\1" AUTORENAME
Rename PATTERN "*" TO "JOERG765*" AUTORENAME
Select JOERG765*
Rename REGEXP PATTERN "(.+)(.)#{$X}" TO "\2\1" AUTORENAME
Rename FINDREP PATTERN "JOERG765" TO "{dlgstring|Eingabe}" AUTORENAME
@NODESELECT
Mit diesem CODE lassen sich gewünschte Zeichen VOR beliebiger Stelle von HINTEN einfügen:

Code: Alles auswählen

@set X = {dlgstring|Anzahl}
Rename TYPE=files REGEXP PATTERN "(.+)(.)(\..*)#{$X}" TO "\2\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.+)(.)#{$X}" TO "\2\1" AUTORENAME
Rename TYPE=files PATTERN "*.*" TO "*JOERG765.*" AUTORENAME
Rename TYPE=dirs Pattern "*" TO "*JOERG765" AUTORENAME
Select *JOERG765
Rename TYPE=files REGEXP PATTERN "(.)(.+)(\..*)#{$X}" TO "\2\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.)(.+)#{$X}" TO "\2\1" AUTORENAME
Rename FINDREP PATTERN "JOERG765" TO "{dlgstring|Eingabe}" AUTORENAME
@NODESELECT
Und mit diesem CODE lassen sich eine gewünschte Anzahl von Zeichen NACH einer beliebigen Stelle entfernen:

Code: Alles auswählen

@set X = {dlgstring|NACH welcher Stelle soll entfernt werden ?}
Rename REGEXP PATTERN "(.)(.+)#{$X}" TO "\2\1" AUTORENAME
Rename PATTERN "*" TO "JOERG765*" AUTORENAME
Select JOERG765*
Rename REGEXP PATTERN "(........).(.+)#{dlgstring|Wieviel Stellen sollen entfernt werden ?}" TO "\1\2" AUTORENAME
Rename PATTERN "*" TO "JOERG765*" AUTORENAME
Select JOERG765*
Rename REGEXP PATTERN "(.+)(.)#{$X}" TO "\2\1" AUTORENAME
Rename FINDREP PATTERN "JOERG765" TO "\~" AUTORENAME
@NODESELECT
OK, diese CODEs haben es in sich. Sie sind nicht wirklich optimal, aber sie führen zu den gewünschten Ergebnissen.
Für Verbesserungen und/oder Vereinfacherungen bin ich wie immer dankbar.

JÖRG

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 5. Mai 2010 23:21
von Kundal
@Joerg765:

Puh..da hast du sicher lange dran gebastelt. Aber Hartnäckigkeit zahlt sich aus.

Habe deine neuen Lösungen mal getestet.
Button 2) und 3) funktionieren wirklich gut, auch wenn bei vielen Dateien immer mal "JOERG765" aufblitzt. Ich habe das bei mir etwas neutraler in "TEMPNAME" umbenannt, so versteht man im Code auch den Zweck des Eintrags.

Der erste Button weigert sich bei mir aber wieder Leerstellen einzufügen wenn sie am Anfang oder Ende der einzufügenden Zeichen stehen.

Übrigens: Ich habe deine vorherige Lösung mit den Punkten im englischen Forum vorgestellt und der ursprüngliche "Erfinder" der Punkte-Lösung (JohnZeman) arbeitet jetzt daran, die Punkte mit einem VB-Script in eine Zahleneingabe zu wandeln.
Vor allem aber gab es einen entscheidenden Tipp von Admin "leo".
Meine Erfahrung ist: wenn der sich einmischt gibt's bald eine professionelle Lösung.
Im englischen Forum rührt sich oft am meisten nach Mitternacht (=> Zeitverschiebung).

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 6. Mai 2010 05:30
von Joerg765
Hallo Kundal,

ich habe im ersten CODE einmal die Anführungsstriche vergessen. Habe sie jetzt eingefügt, so klappt es auch MIT den Leerzeichen.

Aber wenn die im englischen Forum eine bessere Lösung (aufbauend auf den AusgangsCODE) finden, würde ich mich auch freuen,
denn diese CODEs funktionieren zwar, aber mit dem Umbenennen in einen TEMPNAME (oder JOERG765) ist es halt nicht DIE optimale Lösung.

Warten wir mal ab, was da noch kommt ...

DANKE, JÖRG.

Re: Umbenennen: an beliebiger Stelle einfügen

Verfasst: 6. Mai 2010 12:07
von Kundal
@Joerg765:

Ich finde du hast das Problem super gelöst! (...während bei den Profis im englischen Forum immer noch der Kopf raucht...) Respekt!

Habe mal 50 leere Ordner erstellt und damit umbenannt. Gibt einen schönen Fortschrittsbalken und ein sauberes Ergebnis. Das dabei temporär "Tempname" zu sehen ist stört ja nicht weiter und deine Lösung funktioniert nur mit DOpus Bordmitteln ohne aufwändiges Script.

Übrigens:
- Der Button mit dem man beliebig viele Ordner kreieren kann stammt von "leo" (Super zum Testen von Buttons):
http://resource.dopus.com/viewtopic.php?t=8735
- Ich habe mir erlaubt dein Werk in die "Schaltersammlung" aufzunehmen. Ich hoffe,das ist OK für dich.