Ordnernamen und Nummerierung von Dateien oneliner?
Hallo,
gibt es eine Möglichkeit ne fortlaufende Nummerierung nach Größe von Datein die sich in mehreren Ordnern befinden mit dem jeweiligen Ordnernamen davor in einen oneliner zu bekommen?
- der hier schafft das mit dem Ordnernamen nicht und hat Probleme wenn die Dateien ein Leehrzeichen haben
- und dieser benennt nicht der Größe nach um, also z.B. 1,0kb (Name 001.txt); 1,2kb (Name 002.txt) ...
Grüße waldgnarf
[Edit Biber 17.6.2008] Ich gehe auch mal davon aus, dass die Betonung auf "Suche Lösung" und nicht "Suche oneliner" lag. Lösung liegt vor. Beitrag geschlossen. [/Edit]
gibt es eine Möglichkeit ne fortlaufende Nummerierung nach Größe von Datein die sich in mehreren Ordnern befinden mit dem jeweiligen Ordnernamen davor in einen oneliner zu bekommen?
- der hier schafft das mit dem Ordnernamen nicht und hat Probleme wenn die Dateien ein Leehrzeichen haben
@echo off
setlocal EnableExtensions
setlocal EnableDelayedExpansion
set /a X=1000 & for /f %%I in ('dir /b /O-s *.txt') do set /a "X+=1">nul & rename %%I "TEXT !X:~-3!%%~XI"
- und dieser benennt nicht der Größe nach um, also z.B. 1,0kb (Name 001.txt); 1,2kb (Name 002.txt) ...
@echo off
setlocal EnableExtensions
setlocal EnableDelayedExpansion
for /f "delims=" %%O in ('dir /B /AD') do set /a X=1000 && for %%I in (%%O\*.txt) do @Set /a "X+=1">nul & rename "%%I" "%%O !X:~-3!%%~XI"
Grüße waldgnarf
[Edit Biber 17.6.2008] Ich gehe auch mal davon aus, dass die Betonung auf "Suche Lösung" und nicht "Suche oneliner" lag. Lösung liegt vor. Beitrag geschlossen. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 89847
Url: https://administrator.de/contentid/89847
Ausgedruckt am: 20.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo waldgnarf!
Wenn Du auf "oneliner" bestehst, wirst Du vermutlich auf Biber warten müssen ...
... als "fewliner" könnte es so gehen:
Das "echo" vor dem "ren" soll übrigens für stressfreies Testen sorgen, da so die jeweiligen "ren"-Befehle nur angezeigt, aber nicht ausgeführt werden - wenn Du das "echo" weg lässt, wird tatsächlich umbenannt.
Falls in den Ordner- oder Dateinamen ein "$" vorkommen sollte, ersetze dieses Zeichen in den Zeilen 4 und 6 durch ein Sonderzeichen, das in den Ordner- bzw Dateinamen nicht enthalten ist (etwa "§").
Grüße
bastla
[Edit] Definiertes Trennzeichen "$" eingefügt. [/Edit]
Wenn Du auf "oneliner" bestehst, wirst Du vermutlich auf Biber warten müssen ...
... als "fewliner" könnte es so gehen:
@echo off & setlocal EnableDelayedExpansion
set F=%temp%\filelist.txt
if exist %F% del %F%
for /d %%o in (*.*) do for %%i in ("%%o\*.txt") do set /a G=100000000+%%~zi & echo !G!$%%o$%%i>>%F%
set /a X=1000
for /f "tokens=2-3 delims=$" %%i in ('sort %F%') do set /a X+=1 & echo ren "%%~i\%%~j" "%%~i !X:~-3!%%~xj"
Falls in den Ordner- oder Dateinamen ein "$" vorkommen sollte, ersetze dieses Zeichen in den Zeilen 4 und 6 durch ein Sonderzeichen, das in den Ordner- bzw Dateinamen nicht enthalten ist (etwa "§").
Grüße
bastla
[Edit] Definiertes Trennzeichen "$" eingefügt. [/Edit]
Ausgehend vom zweiten Batch den Du gepostet hast kannst Du es ja mal damit versuchen:
Die Änderung besteht in der Sortierreihenfolge des Dir Befehls. Dort wurde beim
@echo off
setlocal EnableExtensions
setlocal EnableDelayedExpansion
for /f "delims=" %%O in ('dir /B /AD /OS') do set /a X=1000 && for %%I in (%%O\*.txt) do @Set /a "X+=1">nul & rename "%%I" "%%O !X:~-3!%%~XI"
Die Änderung besteht in der Sortierreihenfolge des Dir Befehls. Dort wurde beim
dir /B /AD
noch der Parameter /OS angefügt welcher Die Dateiauflistung der Größe nach sortiert:dir /B /AD /OS
@miniversum
... was allerdings daran scheitert, dass nur innerhalb der Verzeichnisse nach Größe sortiert wird, nicht aber übergreifend (die Idee hatte ich nämlich auch zuerst).
Bei einem
fehlt dann wieder der Ordner (was hinsichtlich "oneliner"-Tauglichkeit doch etwas stört und auch noch die Frage aufwirft, ob auch Unter-Unterordner zu berücksichtigen wären).
Grüße
bastla
... was allerdings daran scheitert, dass nur innerhalb der Verzeichnisse nach Größe sortiert wird, nicht aber übergreifend (die Idee hatte ich nämlich auch zuerst).
Bei einem
dir /s /-c /a-d *.txt|findstr /i /e ".txt"|sort /+20
Grüße
bastla