| View previous topic :: View next topic |
| Author |
Message |
versalzen Power Member


Joined: 16 Sep 2003 Posts: 593 Location: kölle, linksrheinisch.
|
Posted: Mon Feb 21, 2011 3:54 pm Post subject: MUT: regex zum erstellen von Verzeichnissen aus Dateimuster? |
|
|
Hallo,
habe jetzt einige Zeit mit experimentieren verbracht, aber mehr als verbrauchte Luft und trübe Augen ist leider nicht übriggeblieben...
Folgendes geht an die TC- und REGEX-Experten:
1) Die Frage, ob das überhaupt mit TC-Mitteln möglich ist,
und
2)
Ich habe dutzende Dateien nach folgendem Muster:
| Code: | Johann_Sebastian_Bach_blafasel123.txt
Meister_Eckhard_Info123.txt
Mister_X_text123.txt |
Wobei
a) alles, was sich, vor dem letzten _ (Unterscore) befindet, als Grundlage für
b) das Erstellen eines Verzeichnisses dienen soll.
Aso würden diese Verzeichnisse erstellt:
| Code: | Johann_Sebastian_Bach
Meister_Eckhard
Mister_X |
c) BONUS:
Die entsprechenden Dateien sollen dann in das passende Verzeichnis verschoben werden, aber das mach ich dann wohl doch händisch :-)
Mir ist es nicht gelungen:
- flexibel zu erkennen, was das letzte _ im Dateinamen ist.
- irgendwie ein Verzeichnis aus dem Ergebnis zu gestalten.
Also eigentlich nix gelungen :-/
Soweit ich nachgelesen habe, müssen Verzeichnisse schon existieren, weil das MUT keine Verzeichnisse anlegen kann. Ist das noch aktuell? Falls ja, werde ich mich gerne auf a) beschränken und direkt zu c) übergehen... :-)
Wenn die Frage 1) mit "nö" beantwortet wird, muss ich Überstunden kloppen. Find ich nicht gut :-)
Irgendjemand eine zündende Idee? _________________ Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?
Mario |
|
| Back to top |
|
 |
Hacker Moderator


Joined: 06 Feb 2003 Posts: 9107 Location: Bratislava, Slovakia
|
Posted: Mon Feb 21, 2011 4:53 pm Post subject: |
|
|
versalzen,
Sollte eigenlitch funktionieren, obwohl ich keine Ahnung habe, wie man das weiter benutzen könnte.
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. |
|
| Back to top |
|
 |
Dalai Power Member


Joined: 28 Jan 2005 Posts: 2718 Location: Meiningen (Südthüringen)
|
Posted: Mon Feb 21, 2011 5:07 pm Post subject: |
|
|
Bei solch komplexen Aufgaben kommt man IMO nur über ein Skript weiter. Schließlich gilt es ja, mehrere Schritte zu erledigen: Verzeichnisse anlegen und Dateien dort hinein schieben.
Mit Batch kommt man wahrscheinlich nicht weiter, daher muss man wohl zu AutoIt oder AutoHotkey greifen. Von AutoIt weiß ich sicher, dass es Regex unterstützt und natürlich auch alle nötigen Dateioperationen ausführen kann.
MfG Dalai _________________ #101164 Personal licence
Athlon 64 X2 5400+ Black Edition, 4096 MB RAM, Gigabyte M56S-S3, WinXP SP3 & Kubuntu 8.04 x64
Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, verdient weder Freiheit noch Sicherheit. |
|
| Back to top |
|
 |
versalzen Power Member


Joined: 16 Sep 2003 Posts: 593 Location: kölle, linksrheinisch.
|
Posted: Mon Feb 21, 2011 5:56 pm Post subject: |
|
|
| Hacker wrote: | versalzen,
Sollte eigenlitch funktionieren. |
Ok,
Suchen nach: (.*)_
[x] RegEx
[x] Subst.
gibt mir die gewünschten Resultate.
Danke, schon mal ein Schritt(chen) weiter.
| Hacker wrote: | | Schließlich gilt es ja, mehrere Schritte zu erledigen | Ich bin aber gerne bereit, die einzelnen Schritte mittels TC hintereinander auszuführen. Kann man ja mittlerweile speichern, ergo auch wieder aufrufen.
Aber ich sehe auch, das es wohl an die Grenzen von TC geht.
Wat schade. AutoIt oder irgendetwas anderes jetzt zu lernen und dann auch noch erfolgreich anzuwenden klingt irgendwie nicht praktikabel.
Dann doch wohl per Hand. Die Nacht ist jung... _________________ Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?
Mario |
|
| Back to top |
|
 |
white Power Member


Joined: 19 Nov 2003 Posts: 1302 Location: Netherlands
|
Posted: Mon Feb 21, 2011 6:01 pm Post subject: |
|
|
-
| Code: | Suchen nach: (.*)_.*
Ersetzen durch: @if not exist "$1" md "$1"
X RegEx
|
Klicken Sie auf die Menü-Taste (unter Taste mit Fragezeichen) und klicken Sie auf "Namen bearbeiten".
Speichern Sie die Datei mit dem Namen "Ordnern.cmd" in den Ordner, in dem Sie umbenennen.
Editor schließen
Klicken Sie auf "Abbrechen"
Mehrfach-Umbenenn-Tool schließen
Doppelklicken Sie auf "Ordnern.cmd"
Mehrfach-Umbenenn-Tool öffnen
| Code: | Suchen nach: (.*)_.*
Ersetzen durch: $1\\$&
X RegEx
|
Klicken Sie auf die Start-Taste
_________________ #16626 Personal licence |
|
| Back to top |
|
 |
versalzen Power Member


Joined: 16 Sep 2003 Posts: 593 Location: kölle, linksrheinisch.
|
Posted: Mon Feb 21, 2011 6:31 pm Post subject: |
|
|
Grandios, white! ;-D
dank je wel! vielen vielen Dank.
Das einzige, was ich hier unter WinXP ändern musste, war die Codierung der abgespeicherten "Ordnern.cmd",
von UCS-2 Little Endian auf ANSI, da mein Notepad++ die Datei so gespeichert hat.
Die Fehlermeldung lautete:
| Code: | C:\>■@
Der Befehl "■@" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
|
Phänomenal, allein auf die Ideen zu kommen das mit diesen gewitzten Schritten zu lösen...
Die gesparte Zeit kann ich nun mit Schlaf füllen. Auch sehr wichtig. _________________ Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?
Mario |
|
| Back to top |
|
 |
versalzen Power Member


Joined: 16 Sep 2003 Posts: 593 Location: kölle, linksrheinisch.
|
Posted: Wed Feb 23, 2011 2:18 pm Post subject: alter Hut, neuer Hut. Beide gut! |
|
|
Hi,
nochmal ich.
Ich muss mich einfach nochmal bedanken.
Die letzen Tage komme ich einfach nicht darüber hinweg, diese Lösung als extrem genial zu empfinden und hätte ich einen Hut an, würde ich ihn ziehen.
:-)
Danke! _________________ Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?
Mario |
|
| Back to top |
|
 |
Stefan2 Senior Member


Joined: 13 Sep 2007 Posts: 251 Location: Germany, EU
|
Posted: Wed Feb 23, 2011 3:26 pm Post subject: |
|
|
| white wrote: |
-
| Code: | Suchen nach: (.*)_.*
Ersetzen durch: @if not exist "$1" md "$1"
X RegEx
|
- Klicken Sie auf die Menü-Taste (unter Taste mit Fragezeichen) und klicken Sie auf "Namen bearbeiten".
- Speichern Sie die Datei mit dem Namen "Ordnern.cmd" in den Ordner, in dem Sie umbenennen.
- Editor schließen
- Klicken Sie auf "Abbrechen"
- Mehrfach-Umbenenn-Tool schließen
- Doppelklicken Sie auf "Ordnern.cmd"
- Mehrfach-Umbenenn-Tool öffnen
-
| Code: | Suchen nach: (.*)_.*
Ersetzen durch: $1\\$&
X RegEx
|
- Klicken Sie auf die Start-Taste
|
Genialer Tipp, danke schön!
| white wrote: | | Ersetzen durch: $1\\$& | Ahh! $&
Ich glaube ich hab' das mal gewusst das es das gibt... aber schon längst wieder vergessen.
Danke fürs erinnern.
Ich kenne das als $0, was hier ebenfalls funktioniert.
Ich habe gleich mal ein bisschen rumgespielt und habe mir das zusammengebastelt:
Datei; Deutsch.lng
Suchen nach: (.*)\....
Ersetzen durch: @IF NOT EXIST "$1" (MD "$1" && move "$0" "$1") ELSE (move "$0" "$1")
X RegEx
Damit funktioniert das MD und MOVE in einem Arbeitsschritt.
z.B.
@IF NOT EXIST "Deutsch" (MD "Deutsch" && move "Deutsch.lng" "Deutsch") ELSE (move "Deutsch.lng" "Deutsch")
Nur mal so
---
EDIT
mehr Tests:
| Code: |
Alles was mit x aufhört
Datei ausgewählt: Deutsch.lng
Suchen nach: (.*)\....
Ersetzen durch: @IF NOT EXIST "$1" (MD "$1" && move "*$0" "$1") ELSE (move "*$0" "$1")
[X] RegEx
@IF NOT EXIST "Deutsch" (MD "Deutsch" && move "*Deutsch.lng" "Deutsch") ELSE (move "*Deutsch.lng" "Deutsch")
Passt auf:
Deutsch.lng
Kopie von Deutsch.lng
Neue-Deutsch.lng
|
| Code: |
Alles was ein X im Namen hat
Datei ausgewählt: Chinese_s.lng
Suchen nach: (.*)\.(...)
Ersetzen durch: @IF NOT EXIST "$1" (MD "$1" && move "*$1*.$2" "$1") ELSE (move "*$1*.$2" "$1")
[X] RegEx
@IF NOT EXIST "Chinese" (MD "Chinese" && move "*Chinese*.lng" "Chinese") ELSE (move "*Chinese*.lng" "Chinese")
Passt auf:
Chinese_s.lng
Chinese_t.lng
|
| Code: |
Alle mit selben Namen und beliebiger Endung
Datei ausgewählt: Deutsch.lng
Suchen nach: (.*)\....
Ersetzen durch: @IF NOT EXIST "$1" (MD "$1" && move "$1.*" "$1") ELSE (move "$1.*" "$1")
[X] RegEx
@IF NOT EXIST "Deutsch" (MD "Deutsch" && move "Deutsch.*" "Deutsch") ELSE (move "Deutsch.*" "Deutsch")
Passt auf:
Deutsch.lng
Deutsch.mnu
Deutsch.ini
|
| Code: |
Alle mit der selben Endung
Datei ausgewählt: Vorlage.lng
Suchen nach: (.*)\.(...)
Ersetzen durch: @IF NOT EXIST "$1" (MD "$1" && move "*.$2" "$1") ELSE (move "*.$2" "$1")
[X] RegEx
@IF NOT EXIST "Vorlage" (MD "Vorlage" && move "*.lng" "Vorlage") ELSE (move "*.lng" "Vorlage")
Passt auf:
Vorlage.lng
Deutsch.lng
French.lng
Romanian.lng
|
Fun!
-------EDIT
Hatte gerade ein neues Problem.
Dutzend Ordner mit Dateien die alle in einen Ordner zusammen kopiert werden sollen.
| Code: |
Gegeben sind diese Ordner:
xyz123\abc.txt
xyz456\def.log
xyz789\ghk.exe
Neuen Ordner anlegen mit z.B. Namen "SammelOrdner"
Alle xyz-Ordner markieren und das MUT aufrufen.
Die von white gezeigten Schritte ausführen:
Suchen nach: (.*)
Ersetzen durch:COPY $1\\*.* SammelOrdner
[X] RegEx
Ergibt folgende Batch:
COPY xyz123\*.* SammelOrdner
COPY xyz456\*.* SammelOrdner
COPY xyz789\*.* SammelOrdner
Diese ausführen und alle Dateien aus den xyz-Ordnern werden in den SammelOrdner kopiert.
|
_________________ Greetings, Stefan.
Last edited by Stefan2 on Sun Feb 27, 2011 9:32 am; edited 2 times in total |
|
| Back to top |
|
 |
white Power Member


Joined: 19 Nov 2003 Posts: 1302 Location: Netherlands
|
Posted: Wed Feb 23, 2011 3:55 pm Post subject: |
|
|
| versalzen wrote: | Grandios, white! ;-D
dank je wel! vielen vielen Dank.
|
Graag gedaan. Bitte.  _________________ #16626 Personal licence |
|
| Back to top |
|
 |
truecolor Junior Member

Joined: 18 Feb 2010 Posts: 28
|
Posted: Tue Mar 08, 2011 2:14 am Post subject: Touché |
|
|
"Impossibile",
da glaubt man doch tatsächlich ein Problemchen zu haben,
- beginnt mit "DIR *.pdf >Liste.txt" eine Verzeichnisliste für hunderten von PDF-Dateien zu erstellen,
- die (anschließend mit Word bereinigt)
- in Excel eingelesen wird
- um daraus den späteren Verz.-Namen zu extrahieren und - vor jeder Zeile ein MD zu setzen
- als vz.bat aus Excel zu exportieren,
- um die Leerverz. zu erstellen
- damit später "von Hand" die Dateien in die Verz. verschoben werden können ...
da stöbert man hier im Forum ein wenig herum ... und ... ich findet sogar hierfür eine fertige Lösung.
Da musste ich erst mal kräftig über meine eigene Einfältigkeit lachen, gefolgt von riesen-Respekt vor diesem genialen Programm TC mit noch größerem Respekt vor dessen PowerUsern.
Ihr habt mir sehr viel Arbeit, noch mehr Zeit und bestimmt jede Menge Nerven gespart.
Viiiiiiiiielen Dank. _________________ "... plötzlich ein greller Blitz am Himmel, ein flammender Meteor stürzt zur Erde..." |
|
| Back to top |
|
 |
truecolor Junior Member

Joined: 18 Feb 2010 Posts: 28
|
Posted: Tue Mar 08, 2011 2:21 am Post subject: |
|
|
| Stefan2 wrote: |
-------EDIT
Hatte gerade ein neues Problem.
Dutzend Ordner mit Dateien die alle in einen Ordner zusammen kopiert werden sollen.
| Code: |
Gegeben sind diese Ordner:
xyz123\abc.txt
xyz456\def.log
xyz789\ghk.exe
Neuen Ordner anlegen mit z.B. Namen "SammelOrdner"
Alle xyz-Ordner markieren und das MUT aufrufen.
Die von white gezeigten Schritte ausführen:
Suchen nach: (.*)
Ersetzen durch:COPY $1\\*.* SammelOrdner
[X] RegEx
Ergibt folgende Batch:
COPY xyz123\*.* SammelOrdner
COPY xyz456\*.* SammelOrdner
COPY xyz789\*.* SammelOrdner
Diese ausführen und alle Dateien aus den xyz-Ordnern werden in den SammelOrdner kopiert.
|
|
Sorry, aber DAS verstehe ich jetzt nicht ganz...
habe ich drei Verz.
- markiere ich alle drei,
- Alt+F7(suchen nach) *.*
- "awenden"-Button (hab ich hier gelernt )
- alle gefundenen Dateien markieren
- F5 -> kopieren
- fertisch
Wozu hierfür so ein Aufwand mit RegEx betreiben?
... oder hab ich da was falsch gelesen? _________________ "... plötzlich ein greller Blitz am Himmel, ein flammender Meteor stürzt zur Erde..." |
|
| Back to top |
|
 |
Stefan2 Senior Member


Joined: 13 Sep 2007 Posts: 251 Location: Germany, EU
|
Posted: Tue Mar 08, 2011 3:10 am Post subject: |
|
|
| truecolor wrote: | Wozu hierfür so ein Aufwand mit RegEx betreiben?
... oder hab ich da was falsch gelesen? | Nein, nichts falsch verstanden.
Es ist nur wie mit den Wegen und Rom...
Wobei "dein" Weg für diesen Einsatzzweck bei weitem der elegantere ist. _________________ Greetings, Stefan. |
|
| Back to top |
|
 |
versalzen Power Member


Joined: 16 Sep 2003 Posts: 593 Location: kölle, linksrheinisch.
|
Posted: Thu Jul 05, 2012 6:02 pm Post subject: Bei mir gehts nicht mehr...urplötzlich... |
|
|
| white wrote: |
-
| Code: | Suchen nach: (.*)_.*
Ersetzen durch: @if not exist "$1" md "$1"
X RegEx
|
- Klicken Sie auf die Menü-Taste (unter Taste mit Fragezeichen) und klicken Sie auf "Namen bearbeiten".
- Speichern Sie die Datei mit dem Namen "Ordnern.cmd" in den Ordner, in dem Sie umbenennen.
- Editor schließen
- Klicken Sie auf "Abbrechen"
- Mehrfach-Umbenenn-Tool schließen
- Doppelklicken Sie auf "Ordnern.cmd"
- Mehrfach-Umbenenn-Tool öffnen
-
| Code: | Suchen nach: (.*)_.*
Ersetzen durch: $1\\$&
X RegEx
|
- Klicken Sie auf die Start-Taste
|
Hallo,
kann es sein, das mit TC 8.x die Schritte 8-10 aus dem oberen Thread und das daraus resultierende Verschieben der markierten Dateien in die existierenden Ordner nicht mehr -wie vor TC 8.x- funktioniert?
Irgendwie passiert nix mehr...
Dabei habe ich mich damals so gefreut, das es so bequem funktioniert.
Hier noch meine vor Monaten gespeicherten MUT-Vorlagen:
| Code: | [rename]
Verz. aus Dateimuster -> verschiebe ins erstellte Verz._name=[N]
Verz. aus Dateimuster -> verschiebe ins erstellte Verz._ext=[E]
Verz. aus Dateimuster -> verschiebe ins erstellte Verz._search=(.*)_.*
Verz. aus Dateimuster -> verschiebe ins erstellte Verz._replace=$1\\$&
Verz. aus Dateimuster -> verschiebe ins erstellte Verz._params=0|1|1|1|1|0|0
Verz. aus Dateimuster -> Vorlage zum Speichern der .CMD_name=[N]
Verz. aus Dateimuster -> Vorlage zum Speichern der .CMD_ext=[E]
Verz. aus Dateimuster -> Vorlage zum Speichern der .CMD_search=(.*)_.*
Verz. aus Dateimuster -> Vorlage zum Speichern der .CMD_replace=@if not exist "$1" MD "$1"
Verz. aus Dateimuster -> Vorlage zum Speichern der .CMD_params=0|1|1|1|1|0|0
|
_________________ Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?
Mario |
|
| Back to top |
|
 |
matbal Member

Joined: 28 Nov 2004 Posts: 149
|
Posted: Fri Jul 06, 2012 1:14 am Post subject: |
|
|
Mittlerweile sollte das in einem Rutsch gehen, da beim Umbenennen auch Ordner erstellt werden können. Ich habe jetzt aber nicht alles durchprobiert, nur ein Beispiel:
Suchen:
Ersetzen
Anhaken
[x] RegEX
[x] Subst.
Das entspricht der 3. + 8. Vorlage von Dir. _________________ http://matbal.drivehq.com |
|
| Back to top |
|
 |
white Power Member


Joined: 19 Nov 2003 Posts: 1302 Location: Netherlands
|
Posted: Fri Jul 06, 2012 4:25 am Post subject: Re: Bei mir gehts nicht mehr...urplötzlich... |
|
|
| versalzen wrote: | | kann es sein, das mit TC 8.x die Schritte 8-10 aus dem oberen Thread und das daraus resultierende Verschieben der markierten Dateien in die existierenden Ordner nicht mehr -wie vor TC 8.x- funktioniert? |
Nein, es sollte funktionieren. Es funktioniert hier gut. Nur mit TC 8.x brauchen Sie die Schritte 1-7 niet mehr. _________________ #16626 Personal licence |
|
| Back to top |
|
 |
|