watcha
Goto Top

Dateinummerierung

grüsst euch,

zur Übersicht möchte ich aus einer Verzeichnisstruktur mit vielen Ordnern und Unterordnern deren enthaltenen Dateien mittels Batch durchnummerieren. Es müssen also alle Dateien umbenannt werden, so das jeder dateiname mit einer Nr beginnt. Die Datei-Nummerierung soll für jeden Ordner und Unterordner von vorn beginnen.

ich hab zu meinem fall leider noch nix wirklich passendes gefunden und auch zu wenig Ahnung davon

hier mal mein Anfang:

file_counter1.bat
d:
cd test

for /r %%i in (*.*) do call d:\file_counter2.bat


file_counter2.bat
set counter=0
:start
for /f %%i in ('dir /A-d /b') do ren %%i "%counter%%%~nxi"
set /A counter += 1
goto start


das endet aber in einer endlosschleife und da sagt er mir immer das er die datei (die er whs umbenennen will) nicht gefunden hat.
ich denk das Problem liegt bei:

ren %%i "%counter%%%~nxi"

außerdem werden hier ordner und dateien mit leerzeichen noch nicht berücksichtigt.

könnt ihr mir helfen?

Content-Key: 116404

Url: https://administrator.de/contentid/116404

Printed on: April 23, 2024 at 13:04 o'clock

Mitglied: 77559
77559 May 19, 2009 at 15:37:40 (UTC)
Goto Top
Zitat von @watcha:
könnt ihr mir helfen?

Ja mit einem Rat:
Meiner Erfahrung nach helfen zusätzliche Nummern nicht die Übersichjt zu erhöhen.
Dein Ansatz führt auch je nach Anzahl der Dateien/Ordner zu unterschiedlicher Stellenzahl der Nummern.
Wenn bei der Sortierung dann 1, 10 100 vor der 2 kommen ist das zumindest gewöhnungsbedürftig.

Gruß
LotPings

PS Zähler gehören in die Schleife nicht dahinter, außerdem brauchst du dann entweder call :Sub, DelayedExpansion oder einen Pseudo call.
Member: watcha
watcha May 19, 2009 at 17:00:25 (UTC)
Goto Top
Hallo LotPings,

ah ok stimmt, unter dos stimmt die Sortierung dann wegen den unterschiedlichen Stellenwerten nicht mehr, nur unter windows gehts....Also wohl nicht so leicht realisierbar. Aber es sollte doch gehen wenn die Nummerierung mit vier Stellen beginnt?! Das sortiert er auf jedenfall schonmal richtig...

0001_bla.txt
0100_zeug.doc
2000_abc.rtf

dieses DelayedExpansion muss ich mir mal genauer anschauen, kannte das bisher nicht.

schonmal Danke
Mitglied: 77559
77559 May 19, 2009 at 17:22:56 (UTC)
Goto Top
Hallo watcha.

Das stimmt schon - und der größte Vorteil des Unterstriches ist, das man mit seiner Hilfe die Numerierung schnell wieder los werden kann.

Was machst du wenn durch Löschvorgänge Lücken entstehen?
Die ehemalige Sortierung beim Erstellen der Nummern ist ja festgeschrieben.
Wenn mit der Numerierung eine bestimmte Struktur verbunden ist ok aber ansonsten ist sie mMn so überflüssig wie nur irgendwas.

dieses DelayedExpansion muss ich mir mal genauer anschauen, kannte das bisher nicht.
Die CMD Shell wertet Variablen in geklammerten oder durch & verbundenen Bereichen nur einmal zu Beginn aus, um eine Evaluierung zu erzwingen gibt es die drei geschilderten Methoden.

Gruß
LotPings
Member: watcha
watcha May 19, 2009 at 18:07:51 (UTC)
Goto Top
für die Dateien der obersten Ordnerebene hat das Umbenennen zwar geklappt, aber für die darunterliegenden nicht, obwohl doch for /r für rekursiv steht oder?! hm...

Aber du hast natürlich recht LotPings, man müsste nach dem Löschen/hinzufügen einer Datei sofort wieder das Script durchlaufen lassen, ansonsten stimmt die Anzahl nicht mehr. Aber dann wird mit jedem Mal der Dateiname um Vier stellen länger face-smile

Somit wird das nicht funktionieren, zumindest nicth mit vertretbaren Aufwand und whs auch nicht mittels Batch. Und das wird wohl nicht der einzigste Sonderfall sein, mal ganz abgesehen von versteckten Dateien und Dateien mit Leerzeichen etc.

Ok habt trotzdem Dank face-smile
Mitglied: 77559
77559 May 19, 2009 at 18:49:52 (UTC)
Goto Top
Zitat von @watcha:
für die Dateien der obersten Ordnerebene hat das Umbenennen zwar
geklappt, aber für die darunterliegenden nicht, obwohl doch for
/r für rekursiv steht oder?! hm...
Das liesse sich zwar mit zwei gestaffelten Schleifen eine für die Verzecihniss (aber Rückwärts damit nicht ein höher ligendes Verzeichnis erst umbenannt wird) eines für die Dateien alles lösen aber ich sehe das immer noch keine sittlichen Nährwert drin.

Aber du hast natürlich recht LotPings, man müsste nach dem
Löschen/hinzufügen einer Datei sofort wieder das Script
durchlaufen lassen, ansonsten stimmt die Anzahl nicht mehr. Aber dann
wird mit jedem Mal der Dateiname um Vier stellen länger face-smile
Auch das ginge erst strippen dann neu numerieren - nur für was eine sich häufig ändernde Nummer überhaupt einbauen?

Somit wird das nicht funktionieren, zumindest nicth mit vertretbaren
Aufwand und whs auch nicht mittels Batch.
Batch kann vieles aber der Aufwand den man treibt sollte sich lohnen.

Und das wird wohl nicht der einzigste Sonderfall sein, mal ganz abgesehen von versteckten Dateien
und Dateien mit Leerzeichen etc.
Auch Leerzeichen sind kein Problem.

Ich danke auch wenn du deine Frage als Erledigt abhakst.

Gruß
LotPings