mistax
Goto Top

Batch rechnen mit Aufrunden

Hallo,

ich hab mich jetzt hier 2 Stunden durchgelesen, aber irgendwie will sich die Lösung nicht finden lassen...

Ich möchte per Batch Folgendes machen:

Dateigröße von %file% in eine Variable schreiben.

for %%F in (%file%) do set/a groesse=%%~zF

und dann diesen Wert durch 1048576 teilen, damit ich MB bekomme.
set/a megabyte=%groesse%/1048576

Wenn ich mir aber das %megabyte% per echo ausgeben lasse kommt:

Ungültige Zahl. Zahlen sind begrenzt auf eine Genauigkeit von 32 Bits.
ECHO ist ausgeschaltet (OFF).

Vermutlich wegen der zuvielen Nachkommastellen; die brauche ich auch garnicht, mir reicht der Wert vor dem Komma.


Wie bekomme ich es also hin, dass er mir einen gerundeten Wert, bzw. wegen mir auch nur die Stellen vor dem Komma rausgibt?

(nicht hauen, wenns einfach ist, ich sitz heute irgendwie neben mir)

Achja - vielen Dank im Vorraus natürlich für jede Hilfe! Wenn es per VBS einfacher geht, auch gerne so - ich kann nur überhaupt kein VBS...

Content-Key: 95459

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

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: MISTAX
MISTAX 27.08.2008 um 16:07:57 Uhr
Goto Top
So schnell kanns gehen... Habe lauter gefundene Codeschnipsel aneinandergehängt und schon funktionierts:

@echo off & setlocal
set Zahl1=%file%
set Zahl2=1048576
set Stellen=0

set R=Rechne.vbs
echo Set a=WScript.Arguments:WScript.Echo FormatNumber(Eval(a(0)),a(1))>%R%
for /f %%i in ('cscript //nologo %R% "%Zahl1%/%Zahl2%" %Stellen%') do set Ergebnis=%%i  
echo %Ergebnis%
del Rechne.vbs

Gerne Verbesserungsvorschläge...
Mitglied: bastla
bastla 27.08.2008, aktualisiert am 18.10.2012 um 18:36:10 Uhr
Goto Top
Hallo MISTAX!

Da Du schon einen Weg gefunden hast, vielleicht nur noch als Anmerkung: Das Problem sind nicht die Nachkommastellen (solche verwendet die CMD-Shell-Arithmetik überhaupt nicht), sondern die Stellen vor dem Komma ...

... mehr dazu in diesem Beitrag.

Grüße
bastla