
37414
05.11.2010, aktualisiert um 08:00:45 Uhr
Dateigröße in Batch ändern von KB auf MB oder GB
Hallo an Alle,
vor einiger Zeit konnte ich mit Eurer Hilfe eine Batchdatei erstellen, mit der mir alle am Vortag vorgenommenen Änderungen auf einem bestimmten Laufwerk angezeigt wurden.
Leider wird die Größe der veränderten Dateien in KB ausgegeben.
Diese Angaben hätte ich der Übersichtlichkeit wegen lieber in MB und/oder GB.
Was muss ich ändern?
Hier die Batch:
Danke Euch und schöne Grüße,
imebro
vor einiger Zeit konnte ich mit Eurer Hilfe eine Batchdatei erstellen, mit der mir alle am Vortag vorgenommenen Änderungen auf einem bestimmten Laufwerk angezeigt wurden.
Leider wird die Größe der veränderten Dateien in KB ausgegeben.
Diese Angaben hätte ich der Übersichtlichkeit wegen lieber in MB und/oder GB.
Was muss ich ändern?
Hier die Batch:
set "Basis=s:\archiv\"
set "Liste=D:\dir.txt"
set "G=%temp%\Gestern.vbs"
>%G% echo WScript.Echo DateAdd("d",-1, Date)
for /f %%i in ('cscript //nologo %G%') do set "Gestern=%%i"
set UnsortiertE=%temp%\E.txt
set UnsortiertG=%temp%\G.txt
copy nul %UnsortiertE% >nul
copy nul %UnsortiertG% >nul
for /r "%Basis%" %%i in (.) do for /f "tokens=1-3*" %%a in ('dir /a-d /tc "%%i" 2^>nul^|findstr /b "%Gestern%"') do call :ProcessLine "%UnsortiertE%" "%%c" "%%a %%b" "%%~fi\%%d"
for /r "%Basis%" %%i in (.) do for /f "tokens=1-3*" %%a in ('dir /a-d "%%i" 2^>nul^|findstr /b "%Gestern%"') do findstr /c:"%%c;%%a %%b;%%~fi\\%%d" "%UnsortiertE%">nul || call :ProcessLine "%UnsortiertG%" "%%c" "%%a %%b" "%%~fi\%%d"
>"%Liste%" echo Erstellt am: %Gestern%
>>"%Liste%" sort %UnsortiertE%
>>"%Liste%" echo\
>>"%Liste%" echo Geändert am: %Gestern%
>>"%Liste%" sort %UnsortiertG%
"%Liste%"
goto :eof
:ProcessLine
set "Gr= %~2"
>>%1 echo %Gr:~-15%;%~3;%~4
goto :eof
Danke Euch und schöne Grüße,
imebro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 154401
Url: https://administrator.de/forum/dateigroesse-in-batch-aendern-von-kb-auf-mb-oder-gb-154401.html
Ausgedruckt am: 03.05.2025 um 06:05 Uhr
7 Kommentare
Neuester Kommentar

MOin,
du mußt für die KB in MB umrechnung "nur" durch 1048576 (/1024/1024) teilen
Wobei das "nur" schon komplizierter wird - denn alles was unter einem MB ist, wird als null angezeigt.
da du da aber ; als Trenner drin hast, möchte ich eigentlich nicht entscheiden, ob da zusätzlich ein KB/MB in die Spalte kommt, wenn die größe < 0 ist.
Gruß
du mußt für die KB in MB umrechnung "nur" durch 1048576 (/1024/1024) teilen
Wobei das "nur" schon komplizierter wird - denn alles was unter einem MB ist, wird als null angezeigt.
da du da aber ; als Trenner drin hast, möchte ich eigentlich nicht entscheiden, ob da zusätzlich ein KB/MB in die Spalte kommt, wenn die größe < 0 ist.
:ProcessLine
set "Gr= %~2"
set /a MB=%Gr:~-15%/1048576
>>%1 echo %MB%;%~3;%~4
goto :eof
Gruß

Hallo imebro,
willst du das Kilo zu 1000 oder zu 1024 Bytes haben?
Für die Variante 1024 und den Set /a Befehl kannst du, da 1024 zwei hoch zehn entspricht, mit dem Bitshift Operator ">> 10" den Wert einfach um 10 Stellen nach rechts verschieben was einer Division durch 1024 entspricht. Für GigaByte dann zwei hoch zwanzig. Damit der Operator nicht mit dem file append verwechselt werden kann, muß alles nach dem set /a in Anführungszeichen eingefasst werden.
Ungetestet:
Gruß
LotPings
Edit: Moin Timo, du warst schneller, aber bei dir geht die rechtsbündige Ausrichtung flöten
willst du das Kilo zu 1000 oder zu 1024 Bytes haben?
Für die Variante 1024 und den Set /a Befehl kannst du, da 1024 zwei hoch zehn entspricht, mit dem Bitshift Operator ">> 10" den Wert einfach um 10 Stellen nach rechts verschieben was einer Division durch 1024 entspricht. Für GigaByte dann zwei hoch zwanzig. Damit der Operator nicht mit dem file append verwechselt werden kann, muß alles nach dem set /a in Anführungszeichen eingefasst werden.
Ungetestet:
:Processline
Set /a "Gr=%~2 >> 20"
set "Gr= %Gr%"
>>%1 echo %Gr:~-15%;%~3;%~4
goto :eof
Gruß
LotPings
Edit: Moin Timo, du warst schneller, aber bei dir geht die rechtsbündige Ausrichtung flöten

Moin,
naja -nur weil ich hin & wieder mal was ohne Computer mache...
Ich hab das mal nachgestellt - mit einer Iso Datei - weil ich nicht wirklich gestern eine erstllt hab (hin und wieder arbeite ich Sonntags wirklich nicht)
- hab ich das temporäre vbs umgangen und der Variable %Gestern% eine feste zuweisung verpasst.
Siehe da:
spuckt deine gepostete Version aus
die geänderte mit MB statt kb.
keine Doubletten und keine leerzeichen / einrückung vor der größenangabe.
Jetzt habe ich das mal etwas "verfeinert"verbastelt...
Und auf meine Pfade angewandt und immer noch das "gestern" statisch gesetzt - sonst käme ja nix raus
also nur den Monat 11.2010 gefiltert (die drei blindenpunkte im Set Gestern)
folgerichtig wieder keine Doubletten und deine gewünschte Benamsung der Dateigröße (da hättest du aber auch selber draufkommen müssen) incl. if else Abfrage ob nun kb oder mb augewürfelt wurden.
Gruß
<b>edit: ich flieg dauernd raus - [strg]+[A] [strg]+[C] ist mein neuer Freund und einfache \ werden trotz codeblock zu doppelten \\
Im Script habe ich das jetzt nochmal "hoffentlich" bereinigt, aber im Rest "logfiledingens" usw. kann mich das "\" mal am abend besuchen</edit>
Zitat von @37414:
...hat Niemand eine Idee zum Problem?
...hat Niemand eine Idee zum Problem?
naja -nur weil ich hin & wieder mal was ohne Computer mache...
Ich hab das mal nachgestellt - mit einer Iso Datei - weil ich nicht wirklich gestern eine erstllt hab (hin und wieder arbeite ich Sonntags wirklich nicht)
- hab ich das temporäre vbs umgangen und der Variable %Gestern% eine feste zuweisung verpasst.
Siehe da:
Erstellt am: 01.11.2010
699.924.480;01.11.2010 12:34;C:\\check\\firmware.iso.iso
Geändert am: 01.11.2010
699.924.480;01.11.2010 14:45;C:\check\firmware.iso.iso
spuckt deine gepostete Version aus
Erstellt am: 01.11.2010
699;01.11.2010 12:34;C:\check\firmware.iso.iso
Geändert am: 01.11.2010
699;01.11.2010 14:45;C:\check\firmware.iso.iso
die geänderte mit MB statt kb.
keine Doubletten und keine leerzeichen / einrückung vor der größenangabe.
Jetzt habe ich das mal etwas "
Und auf meine Pfade angewandt und immer noch das "gestern" statisch gesetzt - sonst käme ja nix raus
set "Basis=C:\script\date\"
set "Liste=C:\script\date\dir4.txt"
set "G=%temp%\Gestern.vbs"
>%G% echo WScript.Echo DateAdd("d",-7, Date)
:for /f %%i in ('cscript //nologo %G%') do set "Gestern=%%i"
set "Gestern=...11.2010"
set UnsortiertE=%temp%\E.txt
set UnsortiertG=%temp%\G.txt
copy nul %UnsortiertE% >nul
copy nul %UnsortiertG% >nul
for /r "%Basis%" %%i in (.) do for /f "tokens=1-3*" %%a in ('dir /a-d /tc "%%i" 2^>nul^|findstr /b "%Gestern%"') do call :ProcessLine "%UnsortiertE%" "%%c" "%%a %%b" "%%~fi\%%d"
for /r "%Basis%" %%i in (.) do for /f "tokens=1-3*" %%a in ('dir /a-d "%%i" 2^>nul^|findstr /b "%Gestern%"') do findstr /c:"%%c;%%a %%b;%%~fi\\%%d" "%UnsortiertE%">nul || call :ProcessLine "%UnsortiertG%" "%%c" "%%a %%b" "%%~fi\%%d"
>"%Liste%" echo Erstellt am: %Gestern%
>>"%Liste%" sort %UnsortiertE%
>>"%Liste%" echo\
>>"%Liste%" echo Geändert am: %Gestern%
>>"%Liste%" sort %UnsortiertG%
"%Liste%"
goto :eof
:ProcessLine
set "Gr=%~2"
set /a MB=%Gr%/1048576
if %MB% gtr 0 (
>>%1 echo %MB% MB;%~3;%~4
) else (
>>%1 echo %Gr% KB;%~3;%~4
)
goto :eof
also nur den Monat 11.2010 gefiltert (die drei blindenpunkte im Set Gestern)
folgerichtig wieder keine Doubletten und deine gewünschte Benamsung der Dateigröße (da hättest du aber auch selber draufkommen müssen) incl. if else Abfrage ob nun kb oder mb augewürfelt wurden.
Erstellt am: ...11.2010
1 MB;08.11.2010 15:50;C:\\script\\date\\liste2.cmd
1 MB;08.11.2010 16:36;C:\\script\\date\\dir3.txt
1 MB;08.11.2010 16:36;C:\\script\\date\\liste3.cmd
1 MB;08.11.2010 16:47;C:\\script\\date\\liste4.cmd
182 KB;08.11.2010 16:33;C:\\script\\date\\dir.txt
205 KB;04.11.2010 12:27;C:\\script\\date\\birthday.cmd
221 KB;04.11.2010 13:03;C:\\script\\date\\birthday2.cmd
65 KB;04.11.2010 13:03;C:\\script\\date\\birthday.ini
699 MB;01.11.2010 12:34;C:\\script\\date\\hp_dl145_g3.iso
998 KB;08.11.2010 15:48;C:\\script\\date\\liste.cmd
Geändert am: ...11.2010
1 MB;08.11.2010 16:33;C:\\script\\date\\liste2.cmd
1 MB;08.11.2010 16:36;C:\\script\\date\\liste3.cmd
1 MB;08.11.2010 16:51;C:\\script\\date\\dir3.txt
1 MB;08.11.2010 17:01;C:\\script\\date\\liste4.cmd
182 KB;08.11.2010 16:33;C:\\script\\date\\dir.txt
205 KB;04.11.2010 12:29;C:\\script\\date\\birthday.cmd
221 KB;04.11.2010 13:11;C:\\script\\date\\birthday2.cmd
65 KB;04.11.2010 13:12;C:\\script\\date\\birthday.ini
699 MB;01.11.2010 14:45;C:\\script\\date\\hp_dl145_g3.iso
998 KB;08.11.2010 15:48;C:\\script\\date\\liste.cmd
Gruß
<b>edit: ich flieg dauernd raus - [strg]+[A] [strg]+[C] ist mein neuer Freund und einfache \ werden trotz codeblock zu doppelten \\
Im Script habe ich das jetzt nochmal "hoffentlich" bereinigt, aber im Rest "logfiledingens" usw. kann mich das "\" mal am abend besuchen</edit>