[batch] Multiple Umbenennung von Verzeichnissen inkl. Längenmodifikation

09/09/2007 - 11:12 von Christian Grünwaldner | Report spam
Es ist ein Kinderspiel, mehrere Dateien mit einer Batch umzubenennen
(ren testdatei*.* neuername*.*), aber wie sieht das aus, wenn man
mehrere Verzeichnisse hat, die inmitten ihres Namens zu entfernende
Zeichenketten haben, z.B.

Verzeichnisse:
Testverz_001_Hase
Testverz_002_Maus
Testverz_allgemein_006_sonstwas
Testverz_demo_003_Katze
Testverz_demo_004_Hund
Testverz_privat_005_Vogel
...

Es handelt sich nicht um so wenige Verzeichnisse, wie hier demonstriert,
sonst würde ich's per Hand umbenennen. Nein, vielmehr sind von Typ
001/002 50 Stück vorhanden und alle weiteren Verzeichnisse (~1500 Stück)
sollen so umbenannt werden, dass sie dem Namen nach in Alphabetischer
Reihenfolge den Zahlen nach geordnet wàren, *ohne* dass die Zahlen vorne
stehen! Sprich, die Verzeichnisse sollten nachher so aussehen:

Testverz_001_Hase
Testverz_002_Maus
Testverz_003_Katze
Testverz_004_Hund
Testverz_005_Vogel
Testverz_006_sonstwas
...

Es ist kein Problem, die unterschiedlichen Typen in verschiedene
Unterordner zur Batchbearbeitung zu verschieben, so dass für jeden Typ
eine eigene Batch vorliegt.

Also, wie würde die Batch aussehen, wenn man eine bestimmte Anzahl
Zeichen aus mehreren Verzeichnisnamen ("demo", "privat", "allgemein"),
die aber alle jeweils an der selben Stelle beginnen und enden,
herausnehmen möchte? Kann man das überhaupt als Batch realisieren?

Ich bin mir sicher, für diesen Zweck gibt es Tonnen an WinXP Freeware
(nicht, dass ich was brauchbares gefunden hàtte), aber mich würde eine
Lösung interessieren, die auf jedem PC mit DOS funktionieren würde.

Ich bin mir sicher, es wàre einfacher, wenn die Verzeichnisse nachher so
aussehen sollten:

Testverz_001
Testverz_002
Testverz_003
Testverz_004
Testverz_005
Testverz_006
...

Das wàre auch noch akzeptabel. Jedoch ist mir keine Batchroutine
bekannt, die in einem Umbenennungsbefehl einen Numerator mitlaufen làsst
und jedem Verzeichnis eine weitere, fortlaufende Nummer zuordnet.
Zumindest nicht unter DOS. Unter XP ist das lachhaft einfach.

Danke für die Mithilfe!
 

Lesen sie die antworten

#1 Matthias Tacke
09/09/2007 - 12:33 | Warnen spam
Christian Grünwaldner wrote:
Es ist ein Kinderspiel, mehrere Dateien mit einer Batch umzubenennen
(ren testdatei*.* neuername*.*), aber wie sieht das aus, wenn man
mehrere Verzeichnisse hat, die inmitten ihres Namens zu entfernende
Zeichenketten haben, z.B.

Verzeichnisse:
Testverz_001_Hase
Testverz_002_Maus
Testverz_allgemein_006_sonstwas
Testverz_demo_003_Katze
Testverz_demo_004_Hund
Testverz_privat_005_Vogel
...



snip

Danke für die Mithilfe!



Naja, bisher ist nur die Aufgabenstellung von dir ;-)

In der Annahme es handelt sich _nicht_ um DOS, sondern um die Cmd Shell von
einer aktuellen Windows Version (nicht 9x/ME)


@echo off
for /f "tokens=1-4 delims=_" %%A in (
'dir /B/A-D Test*'
) do call :sub %%A %%B %%C %%D
goto :eof
:sub
if %4. EQU . goto :eof
echo ren %1_%2_%3_%4 %1_%3_%4


Zum Test ist im letzten Befehl ein Echo enhalten, wenn die Ausgabe der
Batchdatei richtig schein, das echo entfernen.

Grüße
Matthias

Ähnliche fragen