Anwendungs-Software und Apps 14.489 Themen, 73.614 Beiträge

Dateigrößen kumulieren - II

jueki / 11 Antworten / Baumansicht Nickles

Ich hatte in diesem Thread
http://www.nickles.de/forum/anwendungsprogramme-bildbearbeitung-und-co/2014/dateigroessen-kumulieren-539053534.html
nach einer Möglichkeit gefragt, wie ich bei einer ständig größer werdende Datei die Größe kontinuierlich abfragen kann.
InvisibleBot gab mir diesen Script:

 @echo off

COLOR 0A

:loop
cls
for %%F in ("e:\WinTV\Pause\livetv-3260.ts") do set groesse=%%~zF
set /a groesse = %groesse%/1048576
echo %groesse% MB
ping -n 5 127.0.0.1 > NUL
goto loop

Das ganze funktioniert seitdem tadellos.
Nur - wenn die Größe der kontrollierten Datei ca. 2,4GB übersteigt, zählts nicht weiter.
Meldung:
"Ungültige Zahl. Zahlen sind begrenzt auf eine Genauigkeit von 32Bit".
Kann man das dergestalt ändern, das man auch noch wesentlich größere Dateigrößen anzeigen kann? Eventuell in dieser Zeile:

set /a groesse = %groesse%/1048576  ?

Danke schon mal fürs Lesen.

Jürgen

- Nichts ist schwerer und nichts erfordert mehr Charakter, als sich im offenem Gegensatz zu seiner Zeit zu befinden und laut zu sagen "NEIN!" Kurt Tucholsky
bei Antwort benachrichtigen
gelöscht_265507 jueki „Dateigrößen kumulieren - II“
Optionen

Die Zahl 1048576 entspricht 1 MB (1024²)

Versuche da mal mit einem GB. (1024³ =  1073741824)

Das dann auch ändern.

echo %groesse% GB

bei Antwort benachrichtigen
jueki gelöscht_265507 „Die Zahl 1048576 entspricht 1 MB 1024² Versuche da mal mit einem ...“
Optionen

Danke für die Antwort.
Ändere ich die Zahl in der vorgeschlagenen Art, fängt das wahrscheinlich erst an 1GB an zu zählen. Gegenwärtig im Test ist die datei ~700MB groß - die Anzeige ist 0.

Das andere ändert nur die reine Anzeige von MB in GB um.

Jürgen

- Nichts ist schwerer und nichts erfordert mehr Charakter, als sich im offenem Gegensatz zu seiner Zeit zu befinden und laut zu sagen "NEIN!" Kurt Tucholsky
bei Antwort benachrichtigen
gelöscht_254676 jueki „Danke für die Antwort. Ändere ich die Zahl in der ...“
Optionen

The largest possible integer in a batch file is most likely 2,147,483,647 (the maximum value of a 32 bit signed integer).

Ich würde sagen, die maximale Größe für eine 32-bit signed Integer-Zahl ist 2,147,483,647 

bei Antwort benachrichtigen
gelöscht_265507 jueki „Danke für die Antwort. Ändere ich die Zahl in der ...“
Optionen

Das Problem liegt wahrscheinlich schon bei der ersten Zuweisung der Größe in die Variable.

set groesse=%%~zF

Wenn hier die Bitgrenze überschritten wird, kommt die Fehlermeldung.

Das bedeutet, dass es mit einer Batchdatei nicht gehen wird. Das würde vielleicht mit einem VBS-Script gehen, bei dem die Größe der Variablen vorher initialisiert wird.

bei Antwort benachrichtigen
jueki gelöscht_265507 „Das Problem liegt wahrscheinlich schon bei der ersten Zuweisung ...“
Optionen
Das würde vielleicht mit einem VBS-Script gehen

Davon hab ich genau so viel Ahnung, wie vom batchen. Nämlich keine...

Jürgen

- Nichts ist schwerer und nichts erfordert mehr Charakter, als sich im offenem Gegensatz zu seiner Zeit zu befinden und laut zu sagen "NEIN!" Kurt Tucholsky
bei Antwort benachrichtigen
gelöscht_265507 jueki „Dateigrößen kumulieren - II“
Optionen

Deine Fehlermeldung kommt bei der Umrechnung der Größe / 1048576.

Ich denke, wenn du nichts umrechnest und dir die Zahl In Bytes anzeigen lässt, dann wird deine Batch funktionieren.

Ich habe das mal getestet, indem ich die Größe der Festplattenspeichers ausgelesen habe.

Dazu habe ich dieses benutzt.

for /f "tokens=3" %%i in ('dir g:\ /-c') do set size=%%i
echo Freier Plattenplatz (G): %size% Byte

set /a sizeKB = %size% / 1024
echo Freier Plattenplatz (G): %sizeKB% KByte

set /a sizeMB = %size% / (1024 * 1024)
echo Freier Plattenplatz (G): %sizeMB% MB

Pause

Probiere das mal bei dir aus und gib oben einen gültigen Laufwerksbuchstaben ein. Dann siehst du genau, was angezeigt wird und wo der Fehler auftritt.

bei Antwort benachrichtigen
gelöscht_265507 Nachtrag zu: „Deine Fehlermeldung kommt bei der Umrechnung der Größe / ...“
Optionen

@echo off

COLOR 0A

:loop
cls
for %%F in ("e:\WinTV\Pause\livetv-3260.ts") do set groesse=%%~zF
Diese Zeile löschen
echo %groesse% Byte
ping -n 5 127.0.0.1 > NUL
goto loop

Probieren!

bei Antwort benachrichtigen
jueki gelöscht_265507 „@echo offCOLOR 0A:loopclsfor F in e: WinTV Pause livetv-3260.ts do ...“
Optionen

Da blitzt nur sehr kurz ein Fenster auf - weiter nichts.

Jürgen

- Nichts ist schwerer und nichts erfordert mehr Charakter, als sich im offenem Gegensatz zu seiner Zeit zu befinden und laut zu sagen "NEIN!" Kurt Tucholsky
bei Antwort benachrichtigen
gelöscht_265507 jueki „Da blitzt nur sehr kurz ein Fenster auf - weiter nichts. Jürgen“
Optionen

Hast du vergessen "pause" mitzukopieren?

Dann geht das Fenster nicht zu.

Ansonsten könntest du hier Hilfe bekommen:

http://www.administrator.de/frage/rechnen-batch-dateien-140726.html

bei Antwort benachrichtigen
jueki gelöscht_265507 „Hast du vergessen pause mitzukopieren? Dann geht das Fenster nicht ...“
Optionen

Hiermit klappts:

 @echo off

COLOR 0A

:loop
cls
for %%F in ("e:\DVB\TimeShift\*.*") do set groesse=%%~zF
echo %groesse% Byte
ping -n 2 127.0.0.1 > NUL
goto loop

- es hatte sich ein Leerzeichen mit reingeschmuggelt.
Ich werde das beobachten. danke erst einmal - und einen schönen Sonntag!

Jürgen

- Nichts ist schwerer und nichts erfordert mehr Charakter, als sich im offenem Gegensatz zu seiner Zeit zu befinden und laut zu sagen "NEIN!" Kurt Tucholsky
bei Antwort benachrichtigen
gelöscht_265507 jueki „Hiermit klappts: @echo off COLOR 0A :loop cls for F in e: DVB ...“
Optionen

Jetzt wird auch nicht mehr gerechnet, sondern nur angezeigt.

Ob man die Variable in einen String übertragen kann und dann mit Tausenderpunkten versehen kann, weiß ich nicht.

bei Antwort benachrichtigen