nobbi.the.great
Goto Top

Verschiedenste Dateien in einem Ordner auf ihre Größe prüfen, wenn größer x dann Meldung

Hallo Freunde der gepflegten Programmierung

Ich verbringe leider zuviel Zeit mit weniger hilfreichen Dingen, so dass ich kaum die Zeit habe, mir mit Scripten weiterzuhelfen.

Ich muss Ordner (Zugriff per Admin auf die Rechner besteht) mit verschiedenen Dateien (Meist sind es aber gleiche Dateitypen) auf ihre Größe prüfen.

Also reinschauen, absteigend nach Größe sortieren und wenn welche über 1GB dabei sind, einen weiteren Schritt einleiten. Höchstwahrscheinlich Mail an mich oder Notiz in LOG Datei um diese später zu checken.

Ich habe diesen Thread gefunden Alle Dateien in einem Ordner, die unter einer bestimmten Dateigröße liegen, löschen. Das sieht mir schon ganz nützlich aus, aber wie drehe ich den Spies um? Dann natürlich del in >.\log.log ändern und ich wäre glücklich. Oder ist das dafür untauglich?

Ich steh total auf dem Schlauch und weiß mir nicht zu helfen.


Grüße

Content-ID: 180937

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

Ausgedruckt am: 08.11.2024 um 00:11 Uhr

60730
60730 23.02.2012 um 11:41:55 Uhr
Goto Top
Moin,

da hast du aber "leider" genau das falsche Script in den Händen...
Im Prinzip passt die Logik schon, jedoch ist das ein ganz unsauberes Beispiel.
Siehe mein damaliger Kommentar.

Wie sowas mal grob aussehen könnte, wenn es auch Dateien in Unterordnern betrifft....

for /r laufwerk\pfad %a in (*) do if %~za gtr 102400000 @echo %a

wobei laufwerk\pfad natürlich sinngemäß auf deinen Ordner zielen muß und das nur eine "Demo" für die Dosbox ist.
Die Zeile gibt dir so alle Dateinamen aus, die größer als 1GB sind.
Skyemugen
Skyemugen 23.02.2012 um 11:44:13 Uhr
Goto Top
Aloha,

nujoa, bissl Umbauen

@echo off & setlocal
set "Pfad=E:\Downloads"  
set "LOG=E:\datei.log"  
set groesse=1024000000
for /r %Pfad% %%s in (*.typ *.abc *.xyz) do (
	if %%~zs GTR %groesse% (
		echo Folgende Datei wurde entfernt: %%s - Groesse: %%~zs>>%LOG%
		REM echo dient zum Testlauf / Anschauen
		echo del %%s
	)
)
pause

zum Bleistift

greetz André
Nobbi.the.Great
Nobbi.the.Great 23.02.2012 um 12:58:08 Uhr
Goto Top
Zitat von @Skyemugen:

echo Folgende Datei wurde entfernt: %%s - Groesse: %%~zs>>%LOG%
REM echo dient zum Testlauf / Anschauen
echo del %%s
)
)
pause

zum Bleistift

greetz André

Erstmal danke, mir werden tatsächlich Dateien die "größer sind als" angezeigt. Leider mit kompletten Pfad, aber das ist nicht soo tragisch.

Was hat das "del" beim Echo zu bedeuten?

Kann man die Größenangabe beim "echo in LOG" auch humanreadable gestalten?

@timobeil - als Einzeiler in der DOS Box werden mir if´s je Datei wiedergegeben und wenn größer der komplette Pfad zur Datei.
Eigentlich ganz nett, aber wie verarbeite ich das weiter? In einer .bat stürzt es mir ab trotz Pause am Ende
60730
60730 23.02.2012 um 13:12:10 Uhr
Goto Top
Salve,

es gibt größeren einen Unterschied zwischen Andrés Adaption und meiner minimimik.

  • André hat eine Batch umgeschrieben - erkennbar an den doppelten Prozentzeichen, ich eine Demo für die Dosbox.
  • dann hat er den pauchalen echo off Hammer ausgepacktübernommen, den finde ich zum lernen und probieren suboptimal.
  • Dafür hat er dir gezeigt, wie du bestimmte Dateisuffixe durchorgeln kannst, ich nehme alles
  • Wenn du nur die Ergebnise sehen willst.. (das if wird silent gestartet)
for /r laufwerk\pfad %a in (*) do @if %~za gtr 102400000 @echo %a
  • Wenn du nur die Dateinamen samt suffixe sehen willst:
for /r laufwerk\pfad %a in (*) do @if %~za gtr 102400000 @echo %~nxa
  • Wenn du das in ein Log ausgeben willst
for /r laufwerk\pfad %a in (*) do @if %~za gtr 102400000 @echo %~nxa>>logfile.log

gebe einfach mal for /? in der Dosbox ein und scrolle einwenig dort ist das alles ganz gut beschrieben.

Gruß
Skyemugen
Skyemugen 23.02.2012 um 13:37:50 Uhr
Goto Top
Zitat von @Nobbi.the.Great:
Leider mit kompletten Pfad, aber das ist nicht soo tragisch.
%%s ==> %%~nxs
Was hat das "del" beim Echo zu bedeuten?
cmd auf ==> del /? ==> enter (du hast nicht angegeben, was du machen willst also blieb es als Beispiel drin)
Kann man die Größenangabe beim "echo in LOG" auch humanreadable gestalten?
Kann man, nach Vorgabe, sicherlich tun (wie schon oft geschehen) face-wink

greetz André
Nobbi.the.Great
Nobbi.the.Great 23.02.2012 um 14:37:17 Uhr
Goto Top
Fein fein. Das funktioniert sehr gut, aber wie in einem Script verwenden?

Das mit for /? hatte ich schon vorher gemacht, aber irgendwie fehlt mir da eine Klasse Batch um den Faden zu finden. Ich lese mir alles durch, bin danach aber kein Stück schlauer.

Grüße
Nobbi.the.Great
Nobbi.the.Great 23.02.2012 um 14:41:25 Uhr
Goto Top
Ich muss jetzt hier erstmal nen Break machen. Schaue mir das so bald wie möglich nochmal an. Muss es letztlich noch mit einigen Dingen kombinieren w.z.B. Zuordnung, Zeit Datum u.s.w.


Vielen Dank erstmal für die Hilfe ...

... und einen schönen Tag euch!
Nobbi.the.Great
Nobbi.the.Great 24.02.2012 um 13:59:05 Uhr
Goto Top
Hallo zusammen!

Ich starte das Programm welches die evtl. zu großen Dateien erzeugt jetzt mit einer modifizierten Verknüpfung (C:\WINDOWS\system32\cmd.exe /c .bat Script & Programm.exe (minimiert)).

Im Script (von Skyemugen) hab ich am Ende eine .vbs Info Box für das ECHO eingefügt. Es popt also ein mit OK zu bestätigendes Fenster auf, wenn eine Datei größer ist als angegeben.

Leider noch mit kompletten Pfad.

Zitat: Skyemugen
Kommentar Skyemugen schreibt am 23.02.2012, 13:37:50 Uhr
Zitat von Nollosch:
Leider mit kompletten Pfad, aber das ist nicht soo tragisch.
%%s ==> %%~nxs


Wo gehört dieses %%s ==> %%~nxs hin das es funktioniert?

Wenn das noch raus käme, wäre die Lösung perfekt, da ohnehin die Anwender dafür verantwortlich sind und so eine saubere Lösung auf den Schirm bekämen.


Grüße
Skyemugen
Skyemugen 24.02.2012 um 14:12:32 Uhr
Goto Top
...

echo Folgende Datei wurde entfernt: %%~nxs - Groesse: %%~zs>>%LOG%

war das nicht eigentlich eindeutig, dass %%s im echo durch %%~nxs zu ersetzen ist?

P.S.: n = Dateiname | x = Dateiendung
Nobbi.the.Great
Nobbi.the.Great 24.02.2012 um 14:39:28 Uhr
Goto Top
Ich liebe D*** ..... hätt ich beinahe gesagt.

Ich Idiot hatte es auch im for Befehl ausgetauscht und wunderte mich über Abstürze (Strg+H lässt grüßen).

Ist ne richtig feine Lösung geworden.


VIELEN VIELEN DANK
60730
60730 24.02.2012, aktualisiert am 18.10.2012 um 18:50:07 Uhr
Goto Top
moin,

Das mit dem Idiotalfall hast du geschrieben, ich dir das da, das hätte man auch lesen können.

Ps: "Können" - können wir auch mit einem Porschmintfarbenen Haken an dem Fred rechnen?