iceman
Goto Top

Batch - Ordnername umbenennen, Ordnergröße anhängen am Ende des Namens

Hallo,

ich möchte im Ordnernamen die Ordnergröße am Ende des Namens anhängen

Wie im Titel schon beschrieben...

Batch - Ordnername umbenennen, Ordnergröße anhängen am Ende des Namens

Bsp.

ich habe hunderte Ordner die so aussehen.

Ordner ALT:
ZHLU00087_BLACK AND WHITE_2008_XCY_ght_0001
IJHK00098_SCHUH BALL FAHRRAD_JHG_kij_0002

Ordner NEU:
ZHLU00087_BLACK AND WHITE_2008_XCY_ght_0001_12.98GB
IJHK00098_SCHUH BALL FAHRRAD_JHG_kij_0002_252.87MB

So hätte ich sofort den Überblick, über die Größe und kann anschließend daraus Dateien (txt´s) anlegen die dann so aussehen.

(KB,MB,GB,TB hätte ich gern als Angabe, die aber Sinnvoll automatisch gewählt wird, je nach dem, wie groß die Datei ist.)

ich danke schon im voraus.

Gruß Ice

PS. das Gegenstück für die Datei Batch - Dateiname umbenennen, Dateigröße anhängen am Ende des Namens

Content-ID: 163726

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

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

bastla
bastla 31.03.2011 um 14:20:45 Uhr
Goto Top
Hallo Iceman!

Wenn Du nur Textdateien anlegen willst, wozu dann die Ordner umbenennen?

Anyhow:
@echo off & setlocal
set "Ordner=C:\TEST"  

set "Einh=B KB MB GB"  
pushd "%Ordner%"  
for /f "delims=" %%i in ('dir /b /ad') do call :ProcessFile "%%i"  
popd
pause
goto :eof

:ProcessFile
for /f "tokens=3" %%i in ('dir /s /w /-c %1^|findstr "Datei(en)"') do set "G=%%i"  
:: bei mehr als 9-stelliger Dateigröße Sonderbehandlung
if "%G:~9%" neq "" goto :GBorMore  
set /a D=0
set /a N=1
:Loop
if %G% lss 1000 goto :Done
set /a D=G %% 1000
set /a G=G/1000
set /a N+=1
goto :Loop

:GBorMore
:: zuerst die letzten 6 Stellen abschneiden,
set "G=%G:~0,-6%"  
:: dann die letzten 3 Stellen als Dezimalanteil behandeln und
set "D=%G:~-3%  
::  den Teil davor als ganzzahligen Anteil festlegen
set "G=%G:~0,-3%  
:: sowie die Einheit auf GB setzen
set E=4

:Done
for /f "tokens=%N%" %%i in ("%Einh%") do set "E=%%i"  
:: im neuen Namen nur die ersten beiden Stellen des Dezimalanteils verwenden
set "NameNeu=%~n1_%G%.%D:~0,2%%E%%~x1"  
echo ren %1 "%NameNeu%"  
goto :eof
Aber da jetzt ja ohnehin schon "dir" verwendet wird, lässt sich das auch noch etwas kürzer schreiben:
@echo off & setlocal
set "Ordner=C:\TEST"  

pushd "%Ordner%"  
for /f "delims=" %%i in ('dir /b /ad') do call :ProcessFile "%%i"  
popd
pause
goto :eof

:ProcessFile
for /f "tokens=3-7 delims=. " %%a in ('dir /s /w %1^|findstr "Datei(en)"') do (  
    set "G=%%a"  
    set "D=%%b"  
    if "%%b"=="Bytes" (set "D=000" & set "E=B")  
    if "%%c"=="Bytes" set "E=KB"  
    if "%%d"=="Bytes" set "E=MB"  
    if "%%e"=="Bytes" set "E=GB"  
    if "%%f"=="Bytes" set "E=TB"  
)
:: im neuen Namen nur die ersten beiden Stellen des Dezimalanteils verwenden
set "NameNeu=%~n1_%G%.%D:~0,2%%E%%~x1"  
echo ren %1 "%NameNeu%"  
goto :eof
Grüße
bastla
Skyemugen
Skyemugen 31.03.2011 um 14:40:14 Uhr
Goto Top
Aloha,

Zitat von @Iceman:
ich habe hunderte Ordner die so aussehen.
Und ich hoffe, es gibt keine Verknüpfungen zu denen ...
So hätte ich sofort den Überblick, über die Größe
... die sich häufig ändern wird ...
und kann anschließend daraus Dateien (txt´s) anlegen die dann so aussehen.
... wo wir dann bei bastlas Einspruch wären: Warum Ordner umbenennen?
(KB,MB,GB,TB hätte ich gern als Angabe, die aber Sinnvoll automatisch gewählt wird, je nach dem, wie groß die Datei der Ordner ist.)
Und wer wählt sinnvoll, wann das Umbenennen immer wieder aktualisiert wird? (ändern sich eigentlich deine Dateien auch mal [Bearbeitung von Bildern o.Ä.)

Habe mich insgeheim bei dem anderen Thread schon gefragt: Warum macht/will man so etwas? =)

greetz André

edit: ... als zweite for-Schleife im Prozess selbst ... natürlich *rolleyes* fragt mich bloß nicht, was ich heute versucht habe *lmw*