Palladin007
assimiliert
Ich bins mal wieder mit einer neuen Frage.
Ich habe ein Batch.Script, das folgendes tut (oder tun soll):
1.) Es sucht die vorher angegebene Datei
1.) speichert die Datei-Größe ab
2.) sortiert die Dateigröße und gibt eine formatierte Zahl mit Kürzel aus
2.a.) Bei größer als ein 1 MB wird sie in MB angezeigt.
2.b.) Bei kleiner als 1 MB wird sie in kb angezeigt.
3.) Testet, ob die Datei kleiner ist, als 5 MB
3.a.) Wenn kleiner, als 5 MB, dann läuft es normal weiter
3.b.) Wenn größer als 5 MB, dann wird sich beschwert.
Das ganze Programm funktioniert aber nicht und ich vermute, dass es an diesem Teil liegt:
Anscheinend wird die ausgelesene Zahl nicht abgespeichert, oder sie wurde erst gar nicht korrekt ausgelesen.
Und da das ganze Programm auf dieser einsamen Zahl aufbaut, gehts natürlich nicht.
Um das zu testen, hab ich das so geschrieben:
Und als Ausgabe wurde dann dass angezeigt:
Deshalb muss der Fahler da liegen.
Kann mir jemand sagen, was ich da ändern muss?
Ich habe ein Batch.Script, das folgendes tut (oder tun soll):
1.) Es sucht die vorher angegebene Datei
1.) speichert die Datei-Größe ab
2.) sortiert die Dateigröße und gibt eine formatierte Zahl mit Kürzel aus
2.a.) Bei größer als ein 1 MB wird sie in MB angezeigt.
2.b.) Bei kleiner als 1 MB wird sie in kb angezeigt.
3.) Testet, ob die Datei kleiner ist, als 5 MB
3.a.) Wenn kleiner, als 5 MB, dann läuft es normal weiter
3.b.) Wenn größer als 5 MB, dann wird sich beschwert.
Das ganze Programm funktioniert aber nicht und ich vermute, dass es an diesem Teil liegt:
Code:
for /f "tokens=1-3" %%i in ('dir %datei% /-C /S ^|find %datei% ^|find "Bytes"') do set dateigrösse=%%j
echo %dateigrösse%
pause
Anscheinend wird die ausgelesene Zahl nicht abgespeichert, oder sie wurde erst gar nicht korrekt ausgelesen.
Und da das ganze Programm auf dieser einsamen Zahl aufbaut, gehts natürlich nicht.
Um das zu testen, hab ich das so geschrieben:
Code:
set datei=[Der Pfad und Dateiname meiner Datei]
for /f "tokens=1-3" %%i in ('dir %datei% /-C /S ^|find %datei% ^|find "Bytes"') do set dateigrösse=%%j
echo %dateigrösse%
pause
verborgener Text:
Die Datei hieß test2.exe und ist exakt 17.483.501 Bytes groß.
Und als Ausgabe wurde dann dass angezeigt:
Code:
ECHO ist eingeschaltet (ON).
Kann mir jemand sagen, was ich da ändern muss?
verborgener Text:
Code:
set datei="[Datei-Pfad und Name]"
for /f "tokens=1-3" %%i in ('dir %datei% /-C /S ^|find %datei% ^|find "Bytes"') do set dateigrösse=%%j
if %dateigrösse% GEQ 1000000 goto :MB
:kB
set /A %dateigrösse%=(%dateigrösse% / 1000)
set unit=kB
goto :Ende
:MB
set /A mb=(%dateigrösse% / 1000000)
set /A kb=(%dateigrösse% - %mb% * 1000000)/1000
set %dateigrösse%=%mb%,%kb:~0,2%
set unit=MB
:Ende
if %dateigrösse% GEQ 5000000 goto big
goto small
:big
echo Die Datei ist zu groß.
echo Sie darf nur maximal 5 MB groß sein.
pause
goto :EOF
:small
echo Die Datei wurd akzeptiert.
pause