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-Key: 189270

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

Printed on: April 19, 2024 at 08:04 o'clock

Member: bastla
bastla Aug 08, 2012 at 12:10:09 (UTC)
Goto Top
Hallo Nollosch!
Welchen Operator, wenn überhaupt möglich, sollte ich zwischen den if nutzen?
Keinen.

Grüße
bastla
Member: Darkprodukt
Darkprodukt Aug 08, 2012 updated at 12:36:08 (UTC)
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
Member: Nobbi.the.Great
Nobbi.the.Great Aug 08, 2012 updated at 13:03:47 (UTC)
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
Mitglied: 60730
60730 Aug 08, 2012 updated at 21:58:55 (UTC)
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