MUT: variable Dateien flexibel mit fixer Datei überschreiben

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
versalzen
Power Member
Power Member
Posts: 670
Joined: 2003-09-16, 11:52 UTC
Location: kölle, linksrheinisch.

MUT: variable Dateien flexibel mit fixer Datei überschreiben

Post by *versalzen »

Hallo,

wieder mal ein verquicktes Problemchen, bei dem mir inspirative Ideen sehr gelegen kommen würden :-)


In einem Verzeichnis mit diversen Unterverzeichnissen, die jeweils eine original.jpg und eine nicht_original.ext Datei enthalten, möchte ich, das die nicht_original.jpg Datei mit der original.jpg Datei überschrieben wird.

Das komplizierte daran ist, das die Datei nicht_original.ext kein fixer Dateiname ist, wie original.jpg.
Heisst, die nicht_original.ext heisst in jedem Unterverzeichnis anders. Nur die original.jpg heisst in jedem Unterverzeichnis original.jpg

Das gestaltet sich in etwa so:

Code: Select all

C:\Verz1\original.jpg
C:\Verz1\nicht_original_345654.ext
C:\Verz2\original.jpg
C:\Verz2\nicht_3636_original.ext
C:\Verz3\original.jpg
C:\Verz3\auch_nicht_464original.ext
C:\Verz4\original.jpg
C:\Verz4\wieder_nicht_original.ext
C:\Verz5\original.jpg
C:\Verz5\diesmal_ein_ganz_anderer_name.ext
C:\Verz6\original.jpg
C:\Verz6\und_so_weiter.ext
Verz1-6 sind auch keine Verzeichnisnamen, die irgendwie einem Schema unterliegen würden. Es sind beschreibende Namen.

Ich suche also mit ALT+F7 nach *.ext und habe schonmal alle passenden nicht_original.ext Dateien am Wickel.
Da in dem entsprechenden Verzeichnis ja auch (fast) immer eine original.jpg Datei liegt, dachte ich mir, ich kann mein Vorhaben aus diesem sehr hilfreichen Posting ableiten, doch weit gefehlt.
(Das Posting erstellt eine Batchdatei unter zuhilfename der MUT-Möglichkeiten. So eine Batchdatei wollte ich für meine Fälle hier auch generieren lassen.)


[face=courier]Im MUT:
Dateiname: [P][N]
Suchen nach: (.*\.ext)
Ersetzen durch: @if exist original.jpg MV original.jpg "$1"
[x] Regex[/face]


Theoretisch wird schoneinmal etwas generiert, das in die Nähe meines Wunsches kommt: $1 enthält den aktuellen Dateinamen nicht_original.ext und überschreibt diesen mit original.jpg.

Was mir nun (auch noch) fehlt, ist die Möglichkeit, die Dateien verzeichnisbezogen umzubenennen.
Meine Abwandlung des o.g. Postings geht davon aus, das alle betroffenen Dateien sich im akt. Verz. befinden, was nicht der Fall ist.

Dinge, die hier zusätzloch noch falsch laufen:
-zwischen [P] und [N] müsste ein Backslash, weil ich Verzeichnis von Dateinamen trennen möchte. Doch [P]\[N] wirft einen Fehler. Ich würde ja auch gerne im Suchen/Ersetzen-Dialog auf das jew. Verz. verweisen, aber finde ich keine Möglichkeit dafür.
-Die Anweisung (für die spätere Batchdatei) @if exist original.jpg MV original.jpg "$1" berücksichtigt noch nicht, das "$1" ja schon als Datei existiert. Hier müsste ich wohl einen entsprechenden Schalter im MV Befehl setzen, der die Datei ungefragt überschreibt, oder sie ggf. vorher löschen/umbenennen nach *.bak


Damit es jetzt nicht noch mehr verwirrender Text wird, frage ich direkt an dieser Stelle, ob jemand hier eine Idee hat, wie ich meinen Wunsch mit TC Mitteln verwirklichen kann. Evtl. noch mit mir unbekannten Plugins?

Ich bin, wäre und werde sein: sehr verbunden für einen konstruktiven Hinweis!
Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?

Mario
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Ich habe zwar deinen Lösungsansatz nicht verstanden, aber zur intelligenten Batch- oder Scriptgernerierung gibt es nur eines:
http://www.totalcmd.net/plugring/WdxInfopacker.html

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Versuchs mal mit:
Name: [=tc.path][N].[E]
Erweiterung:
Suche: (.*)\\(.*\.ext)
Ersetze: @if exist "$1\\original.jpg" MV "$1\\original.jpg" "$1\\$2"
[x] RegEx

Gruß
Holger
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Peter wrote:Ich habe zwar deinen Lösungsansatz nicht verstanden
Der Trick besteht darin, dass man die Namen ja in einer Liste aus dem MUT heraus editieren kann.
Diese Liste kann man dann im Editor als Batch-Datei speichern...

Gruß
Holger
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

HolgerK wrote:...Der Trick besteht darin, dass man die Namen ja in einer Liste aus dem MUT heraus editieren kann.
Diese Liste kann man dann im Editor als Batch-Datei speichern...
Danke, habe es jetzt gesehen. Meine Lösung gefält mir besser :wink:

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
versalzen
Power Member
Power Member
Posts: 670
Joined: 2003-09-16, 11:52 UTC
Location: kölle, linksrheinisch.

Post by *versalzen »

Name: [=tc.path][N].[E]
Erweiterung:
Suche: (.*)\\(.*\.ext)
Ersetze: @if exist "$1\\original.jpg" MV "$1\\original.jpg" "$1\\$2"
[x] RegEx
Holger! :-)
Es hat funktioniert. Ich lerne doch immer wieder dazu. (Ebenso vergesse ich auch wieder schnell, denn bei meinem alten 8MB RAM BRAIN muss ich viel auslagern, was die Erinnerung angeht...)

Einzig
Name: [=tc.path][N].[E] habe ich in Name: [=tc.path][N] geändert, damit ich keine doppelte Extension habe, aber ansonsten konnte ich das Gewünschte durch Dein fix&fertiges Beispiel direkt umsetzen. (Natürlich ist mir erst jetzt aufgefallen, das Du Extension leer gelassen hast und ich nicht...)

Die Option um MV zum direkten überschreiben zu zwingen lautet -f, was klar war.

@Peter: Da weckst Du da Erinnerungen in mir mit Deiner Erwähnung dieses Tools aus dem Jahre 2008....ich habe mal bei mir in den Verzeichnissen nachgeschaut und es dort nicht mehr gefunden. Obwohl ich Plugins habe, die weit älter sind, meine ich mich zu erinnern, das es -warum auch immer- nicht mehr funktioniert hat und ich es deswegen irgendwann ausgemistet habe. Ich denke, -sollte es funktionieren, dieses Tool, ist es um einiges intuitiver als meine Variante. Und sogar als Vorlage abspeicherbar, das ist natürlich der Renner!

Danke Euch beiden! Nun kann ich beruhigt in die Nacht einsteigen.
Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?

Mario
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Die Option um MV zum direkten überschreiben zu zwingen lautet -f, was klar war.
Alternative:
move /Y source dest
8MB RAM BRAIN
Tja, ist schon erstaunlich mit wie wenig Bit man bei assoziativen Prozessoren zurechtkommt :wink:

Gruß
Holger
Post Reply