Mehrfach-Umbenenn-Tool: Suchen & Ersetzen nur im Dateina

German support forum

Moderators: Hacker, Stefan2, white

CeeDub
Junior Member
Junior Member
Posts: 8
Joined: 2010-01-23, 15:18 UTC

Mehrfach-Umbenenn-Tool: Suchen & Ersetzen nur im Dateina

Post by *CeeDub »

Hallo zusammen,

gibt es einen Weg, das MUT so einzustellen, dass Suchen & Ersetzen nur den Dateinamen ([N]) berücksichtigt und nicht die Dateierweiterung ([E])?

Hintergrund: Wenn ich Punkte im Dateinamen durch Leerzeichen ersetzen lasse, passiert dieses:

Code: Select all

Dateiname.mit.Punkten.txt
wird zu

Code: Select all

Dateiname mit Punkten txt
Ich muss das Tool also nachher nochmal drüber laufen lassen, um den Punkt wieder zwischen Dateinamen und -erweiterung zu kriegen.

Geht das irgendwie eleganter?
User avatar
van Dusen
Power Member
Power Member
Posts: 684
Joined: 2004-09-16, 19:30 UTC
Location: Sinzig (Rhein), Germany

Post by *van Dusen »

Eine Möglichkeit ist: Im MUT...

Umbenennmaske: Dateiname: [N]
Erweiterung: #[E]
Suchen&Ersetzen: Suchen nach: .|•#
Ersetzen duch: •|.

(Gib statt "" jeweils ein Leerzeichen ein; statt des "#" kannst Du auch ein beliebiges anderes Zeichen verwenden)
CeeDub
Junior Member
Junior Member
Posts: 8
Joined: 2010-01-23, 15:18 UTC

Post by *CeeDub »

Brilliant! Vielen Dank für die schnelle Antwort. Funktioniert phantastisch!

Jetzt müsste ich nur noch verstehen, wie es funktioniert, damit ich mir in Zukunft selbst helfen kann... In der Hilfe finde ich den |-Ausdruck nicht und http://www.regexpstudio.com scheint tot zu sein, was bewirkt das |?
User avatar
van Dusen
Power Member
Power Member
Posts: 684
Joined: 2004-09-16, 19:30 UTC
Location: Sinzig (Rhein), Germany

Post by *van Dusen »

Es funktioniert, weil Suchen&Ersetzen nach der Umbenennmaske angewendet wird. Mit dem Pipe-Symbol "|" im Suchen nach- und im Ersetzen durch-Ausdruck können mehrere Texte auf einmal gesucht und ersetzt werden, wobei die durch "|" separierten Teilausdrücke wiederum von vorne nach hinten, also nacheinander abgearbeitet werden.

Bezogen auf Dein Beispiel heißt das konkret:

1. Schritt:
Dateiname.mit.Punkten.txt => Umbenennmaske: [N] #[E] => Dateiname.mit.Punkten.#txt
2. Schritt:
Dateiname.mit.Punkten.#txt => Suchen&Ersetzen, 1. Teilausdruck: "." in "•" => Dateiname•mit•Punkten•#txt
3. Schritt:
Dateiname•mit•Punkten•#txt => Suchen&Ersetzen, 2. Teilausdruck: "•#" in "." => Dateiname•mit•Punkten.txt

Reguläre Ausdrücke sind hier übrigens gar nicht im Spiel.

Nähere und weiterführende Informationen erhältst Du in der TC-Hilfe unter Dialogbox - Mehrfach-Umbenn-Tool, die Du am schnellsten durch Klick auf den unscheinbaren "?"-Button (im MUT rechts neben der Gross-/Kleinschreibung-Optionsgruppe) erreichst.
CeeDub
Junior Member
Junior Member
Posts: 8
Joined: 2010-01-23, 15:18 UTC

Post by *CeeDub »

Danke für die Erklärung!
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

van Dusen wrote:Umbenennmaske: Dateiname: [N]
Erweiterung: #[E]
Suchen&Ersetzen: Suchen nach: .|•#
Ersetzen duch: •|.
Chapeau, "van Dusen"! Da kann ich mich dem thread_owner nur anschliessen. Brillant einfach - einfach brillant!

Im Zeitalter der allgemeinen "dot-Verseuchung" von Dateinamen (irre ich mich, oder hat diese grobe Unsitte zeitgleich mit der Einführung der .NET-Plattform flächendeckend um sich gegriffen?) eine oft gebrauchte Funktion!

Einziger Wermutstropfen bei dieser Technik ist allerdings, dass, sollte man vergessen, in "#[EXT]" vor dem Beenden des MRT das "#" zu löschen, dieses beim nächsten MRT-Aufruf wieder geladen wird - und somit die Gefahr besteht, durch Unachtsamkeit alle file-Extensions zu verunstalten.

Dieses Problem wird jedoch seit ca. 5 Jahren diskutiert. Frage daher: gibt es mittlerweile (in 7.50a) einen .ini-Eintrag, der bewirkt, dass das MRT mit den default-Einstellungen geladen wird? Oder gibt es inzwischen eine andere Lösung mit "Bordmitteln" (also ohne AHK, etc.)?

Ich habe bisher, um das erwähnte Risiko zu umgehen, eine andere Lösung für die gestellte Aufgabe benutzt, die allerdings insofern weniger elegant ist, als sie - gewissermassen rekursiv - immer nur Namen mit 2 Punkten gegen solche mit einem Punkt ersetzt. Dadurch bleibt der Punkt vor der extension zwar zu jeder Zeit unangetastet, das Verfahren funktioniert allerdings nur für eine begrenzte Anzahl von Punkten - und muss daher bei Bedarf wiederholt werden. Sicherer zwar, aber eben deutlich weniger elegant:

Suchen nach:
.*.*|.*.*|.*.*|.*.*|.*.*|.*.*|.*.*|.*.*|.*.*|.*.*|.*.*
Ersetzen durch:
_*|_*|_*|_*|_*|_*|_*|_*|_*|_*|_*

Ich ersetze dabei die Punkte durch Underscores, auf Wunsch geht es natürlich auch mit Leerzeichen.

mfg
algol
User avatar
Lefteous
Power Member
Power Member
Posts: 9537
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

Das alles würde für viel mehr Benutzer erschließbar sein, wenn die UI des MUT dahingehend verbessert würden wäre, dass die Schritte selbst und deren Reihenfolge durch den Nutzer einstellbar wären. Die Preview müsste natürlich auch für jeden Schritt anwendbar sein.
Davon abgesehen würde die UI wohl auch nicht so überfrachtet aussehen.
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

<ot>
algol wrote:Im Zeitalter der allgemeinen "dot-Verseuchung" von Dateinamen (irre ich mich, oder hat diese grobe Unsitte zeitgleich mit der Einführung der .NET-Plattform flächendeckend um sich gegriffen?) eine oft gebrauchte Funktion!
Ich dachte immer, dass Windows 95/NT3.51 mit der Einführung von VFAT und den langen Dateinamen diese Unsitte salonfähig gemacht hat. :P
</ot>

Nichts gegen das zweistufige Umbenennen mit dem Pipe-Symbol, aber: würde ich als eine intuitiv bedienbare Lösung empfinden.

Gruß
Holger
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

HolgerK wrote:Ich dachte immer, dass Windows 95/NT3.51 mit der Einführung von VFAT und den langen Dateinamen diese Unsitte salonfähig gemacht hat. :P

Prinzipiell natürlich richtig, aber ein vernünftig eingesetzter (nicht unnötig zu) langer Dateiname muss ja noch nicht zwangsläufig zur Hälfte aus Punkten bestehen. Und obwohl auch nicht .NET-causal hatte ich ja von "flächendeckendem um sich greifen" dieses, nennen wir es "Trend"-es gesprochen. Und nein, MS ist nicht der (schon gar nicht allein-) Schuldige hier.
HolgerK wrote: würde ich als eine intuitiv bedienbare Lösung empfinden.
Da bin ich ganz bei Dir! Wie übrigens sehr oft! Ich sehe Dich mit zahllosen Beiträgen als herausragende Stütze dieses Forums an und es ist, jüngsten sachlichen Differenzen zum Trotz, gewiss nicht meine Absicht, die "Alten Hasen" hier zu nerven.

Also: Checkbox für Ersetzen nur im Dateinamen: 100% support - und, wie der Engländer zu sagen pflegt: "It's about time". Gleich wie <Ctrl>M startet MRT mit default, <Ctrl><Shift>M mit den letzten Werten bei Verlegung der jetzigen ftp?-Funktion.

mfg
algol
Moon
Member
Member
Posts: 195
Joined: 2003-09-12, 07:41 UTC

Post by *Moon »

algol wrote:Brillant einfach - einfach brillant!
Naja, sobald man einmal weiß, dass Piping geht, eine recht naheliegende Lösung, mir aber immer noch zu umständlich.
HolgerK wrote:Nichts gegen das zweistufige Umbenennen mit dem Pipe-Symbol, aber:
Suchen & Ersetzen ([x] nur im Dateinamen)
würde ich als eine intuitiv bedienbare Lösung empfinden.
Zustimm. Allerdings fänd ich's auch super, wenn mir jemand für die Zeit bis zur (hoffentlich stattfindenden) Implementation nen regulären Ausdruck für "ersetze alle Punkte, außer dem ganz rechten" geben könnte.
algol wrote:Im Zeitalter der allgemeinen "dot-Verseuchung" von Dateinamen (irre ich mich, oder hat diese grobe Unsitte zeitgleich mit der Einführung der .NET-Plattform flächendeckend um sich gegriffen?) eine oft gebrauchte Funktion!
Entschuldige mal, wenn hier jemand was verseucht hat, dann doch Microsoft durch die Unsitte, entgegen aller Konventionen plötzlich Whitespace in Dateinamen zuzulassen. Dass die Linuxer keinen Bock drauf haben, deswegen jedes Mal Namen in Anführurngszeichen packen zu müssen, ist ja wohl verständlich.

Außerdem sind Punkte aufgrund ihrer geringen Breite weit besser lesbar als Unterstriche oder, noch schlimmer, Groß/Kleinschreibung:

C64_GVA_200-14-Castles_Of_Dr_Creep.avi

C64GVA200-14-CastlesOfDrCreep.avi

C64.GVA.200-14-Castles.Of.Dr.Creep.avi
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Moon wrote: noch schlimmer, Groß/Kleinschreibung:
KomischNachJahrelangerUebungHabeIchDaEigentlichUeberhauptKeinProblemDamit();

Holger :wink:
User avatar
Hacker
Moderator
Moderator
Posts: 13142
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Moon,
Allerdings fänd ich's auch super, wenn mir jemand für die Zeit bis zur (hoffentlich stattfindenden) Implementation nen regulären Ausdruck für "ersetze alle Punkte, außer dem ganz rechten" geben könnte.
Eine Suche nach regex extension replace führt gleich im dritten Thread zum gewünschten Ausdruck.

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Moon
Member
Member
Posts: 195
Joined: 2003-09-12, 07:41 UTC

Post by *Moon »

Danke, aber warum nicht direkt ein Link? Im dritten Thread steht nämlich nur, wie man die Releasegroup los wird, mir geht's aber um alle Punkte bis auf den, der die Extension abtrennt. Die anderen Beispiele sind auch alle nur Workarounds bzw. beziehen sich auf eine bestimmte Extension, ich such aber eine regex-Version, die den letzen Punkt bei allen stehen läßt, dachte immer, man könne auch von hinten nach vorne suchen.

Anyway, bis dahin nehme ich deinen Workaround aus diesem Thread:

Code: Select all

Name: [N]
   Extension: #[E]
  Search for: .|_#
Replace with: _|.
algol
Senior Member
Senior Member
Posts: 456
Joined: 2007-07-31, 14:45 UTC

Post by *algol »

Moon wrote:Entschuldige mal, wenn hier jemand was verseucht hat, dann doch Microsoft durch die Unsitte, entgegen aller Konventionen plötzlich Whitespace in Dateinamen zuzulassen. Dass die Linuxer keinen Bock drauf haben, deswegen jedes Mal Namen in Anführurngszeichen packen zu müssen, ist ja wohl verständlich.
Insoweit stimme ich Dir durchaus zu, aber Whitespace dann ausgerechnet durch den (ehemals) "reservierten" - und immer noch mit Spezialbedeutung behafteten - 'dot' zu ersetzen, ist eine Schnapsidee von hohen Graden. Ein mindestens gleich übles Revanchefoul sozusagen, da ein völlig unnötiger und geradezu mutwilliger Akt von "seeking for trouble". Z.B. wäre ohne derlei Unfug eben dieser 'thread' samt allen 'workarounds' gegenstandslos!

Ich weiss nicht, wie es Dir geht, aber auf der Suche nach Lösungen für Probleme, die ich sonst gar nicht gehabt hätte, bin ich eigentlich nur selten - und wenn, dann höchst ungern.
Moon wrote:Außerdem sind Punkte aufgrund ihrer geringen Breite weit besser lesbar als Unterstriche oder, noch schlimmer, Groß/Kleinschreibung:
Da sage ich doch: Mitnichten! Deine folgenden Beispiele widerlegen die obige Behauptung ja auch umgehend selbst.

Denn nicht nur ist die 'Underscore'-Variante am deutlichsten gegliedert und somit lesetechnisch am schnellsten erfassbar, der 'Underscore' ist auch deshalb das nächstliegende - und damit natürliche - Ersatzzeichen für 'Whitespace', da er (nach <Alt>255) ihm optisch am nächsten kommt - und da er vor allem bedeutungsneutral ist.

In den Büchern und Texten, die ich lese, beenden Punkte nämlich Sätze und 'statements', während z.B. Bindestriche zwei Begriffe auch semantisch verknüpfen. "Schwarz-Rot-Gold" hat eben eine eigene Bedeutung, "ging-in-den-Garten" bzw. - noch schlimmer - "ging.in.den.Garten" sieht einfach nur dämlich aus.
Moon wrote:Anyway, bis dahin nehme ich deinen Workaround aus diesem Thread:
Kommt Dir das nicht ein wenig bekannt vor? Das ist doch exakt, was "van Dusen" im 2. post vorschlug, Du aber gerade oben noch als gleichermassen naheliegend wie "zu umständlich" abgetan hast.

Der gesuchte RegEx Ausdruck ist vermutlich:

Code: Select all

(\.[^.]*)$|\.
_$1
Doch auch er löst das Problem nicht wirklich, erzeugt er doch ein überzähliges Ersetzungszeichen (hier "_") vor dem extension-Punkt.

mfg
algol
User avatar
Hacker
Moderator
Moderator
Posts: 13142
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Moon,
Danke, aber warum nicht direkt ein Link?
Weil die Suchfunktion sehr nutzlich ist.
Im dritten Thread steht nämlich nur, wie man die Releasegroup los wird
Schade, zu spat, jetzt ist es schon der vierte.

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Post Reply