Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dateinummerierung

Frage Entwicklung Batch & Shell

Mitglied: watcha

watcha (Level 1) - Jetzt verbinden

19.05.2009, aktualisiert 17:04 Uhr, 3490 Aufrufe, 5 Kommentare

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?
Mitglied: LotPings
19.05.2009 um 17:37 Uhr
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.
Bitte warten ..
Mitglied: watcha
19.05.2009 um 19:00 Uhr
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
Bitte warten ..
Mitglied: LotPings
19.05.2009 um 19:22 Uhr
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
Bitte warten ..
Mitglied: watcha
19.05.2009 um 20:07 Uhr
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

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
Bitte warten ..
Mitglied: LotPings
19.05.2009 um 20:49 Uhr
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
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...