nobbi.the.great
Goto Top

Dateigröße von Wert X bis Wert Y ermitteln. ( iF Datei größer x aber kleiner y )

Hallo Leute, seid gegrüßt

Ich habe einen Ordner mit verschiedenen Dateien. Die Dateien die ich suche sind zw. 800 und 1500MB groß. trifft diese Größe zu, will ich eine Ausgabe bzw. einen .log Eintrag generieren.

Ich hab folgendes versucht, stehe aber aktuell auf dem Schlauch. Bisher läuft alles ohne das Zweite if einwandfrei.


@echo off & setlocal
Setlocal EnableDelayedExpansion

set "LOG=C:\check.log"  
set "Pfad=C:\Test"  
set groesse=799000000
set groesse2=1499000000

for /r %Pfad% %%s in (*.exe) do (
	if %%~zs GTR %groesse% && if %%~zs LSS %groesse2% (
		echo Folgende Datei ist zu groß: %%~nxs - Groesse: %%~zs - >>%LOG%
        )
)

Welchen Operator, wenn überhaupt möglich, sollte ich zwischen den if nutzen?
Muss ich eine weitere Schleife nutzen?
Ist die Lösung generell schlecht?

Ich habs bisher nur mit
 if %%~zs GTR %groesse% 
gemacht und lief einwandfrei. Nun hat sich aber rausgestellt, dass es größere Dateien gibt, die ich nicht erfassen will/darf.

Über jede Hilfe bin ich dankbar. Auch über bessere Suchparameter, denn bisher hab ich nichts Brauchbares gefunden.


Euer Nollosch

Content-ID: 189270

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

Ausgedruckt am: 07.11.2024 um 22:11 Uhr

bastla
bastla 08.08.2012 um 14:10:09 Uhr
Goto Top
Hallo Nollosch!
Welchen Operator, wenn überhaupt möglich, sollte ich zwischen den if nutzen?
Keinen.

Grüße
bastla
Darkprodukt
Darkprodukt 08.08.2012 aktualisiert um 14:36:08 Uhr
Goto Top
Hm...

(Ungetestet)
@echo off & setlocal
Setlocal EnableDelayedExpansion

set "LOG=C:\check.log"  
set "Pfad=C:\Test"  
set groesse=799000000
set groesse2=1499000000

for /f %%i in ('dir /a-s-h-d /b /s "%Pfad%\*.exe"') do (  
	if %%~zs GEQ %groesse% (
                                if %%~zs LEQ %groesse2% echo Folgende Datei ist zu groß: %%~nxs - Groesse: %%~zs - >>%LOG%
		
        )
)

So hat man die Datein ausgabe die zwischen 800MB und 1500MB liegen.

Ich bin jezt aber nicht sicher, ob du die ausgabe so woltest oder obs die ausgeben soll,
die nicht im bereich sind. >>Folgende Datei ist zu groß:<<


Grüße
Darkprodukt
Nobbi.the.Great
Nobbi.the.Great 08.08.2012 aktualisiert um 15:03:47 Uhr
Goto Top
Zitat von @bastla:
Hallo Nollosch!
> Welchen Operator, wenn überhaupt möglich, sollte ich zwischen den if nutzen?
Keinen.

Grüße
bastla


Ich musste direkt lachen. Man-o-Meter bin ich blöd. Darauf hätt ich ja eigentlich auch kommen können.


Vielen vielen Dank, es funktioniert tadellos.


@Darkprodukt

Zitat von @Darkprodukt:

Ich bin jezt aber nicht sicher, ob du die ausgabe so woltest oder obs die ausgeben soll,
die nicht im bereich sind. >>Folgende Datei ist zu groß:<<


Grüße
Darkprodukt

Diese Meldung stammt noch aus Zeiten wo die Datei einfach nur eine Minimumgröße haben musst um auszulösen.

Ich werde mir deinen Vorschlag dennoch mal anschauen.

Auch Dir vielen Dank für deinen Mühen.


Euer Nollosch
60730
60730 08.08.2012 aktualisiert um 23:58:55 Uhr
Goto Top
Moin,

Zitat von @Darkprodukt:
Hm...

(Ungetestet)

Ot
Was macht ein echo off und was hat das in einem ungetesteten batch verloren?
Fuer was braucht man das setlocal doppelt?
@echo off & setlocal
Setlocal EnableDelayedExpansion
Wenn man in einer schleife keinen token benutzt, wie kommt man dann von i nach s?

for /f %%i in ('dir /a-s-h-d /b /s "%Pfad%\*.exe"') do (
if %%~zs GEQ %groesse% (
if %%~zs LEQ %groesse2% echo diese meldung wird niemals gemeldet.


Gruss