zeroblue2005

Anpassung Batch Dateien löschen wenn größer als 500 MB

Hallo Zusammen,

habe diese Zeilen hier gefunden:

@echo Test
for /r "D:\test1" %a in ("*.*") do @if %%~za gtr 500000000 @echo del "%a"  
Pause

Allerdings habe ich wohl einen Fehler gemacht, die Batch startet kurz und geht dann wieder zu und das wars, wo liegt der Fehler?

Danke
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 445814

Url: https://administrator.de/forum/anpassung-batch-dateien-loeschen-wenn-groesser-als-500-mb-445814.html

Ausgedruckt am: 29.06.2025 um 10:06 Uhr

em-pie
em-pie 28.04.2019 um 09:46:20 Uhr
Goto Top
Moin,

Deine Batch bricht irgendwo ab. Und zwar bevor das Pause erreicht wird.

Zum „Debuggen“: CMD öffnen und Batch per Drag&Drop dort hinein ziehen. Danach Enter drücken und sehen, welche Fehler ausgespuckt werden...

Gruß
em-pie
zeroblue2005
zeroblue2005 28.04.2019 aktualisiert um 09:50:26 Uhr
Goto Top
Hi Em-Pie,

ne mein Fehler, habe vergessen zwei mal %% zu setzen:

for /r "D:\test1" %%a in ("*.*") do @if %%~za gtr 100 @echo del "%%a"  

Jetzt wird das auch als Batch ausgeführt und zeigt auch was gelöscht wird, jedoch wird nur simuliert, also das Ergebnis ausgegeben. Es wird also nicht tasächlich gelöscht.... hast du eine Idee?
em-pie
em-pie 28.04.2019 um 09:53:51 Uhr
Goto Top
Weil du ein @echo vor dem Delete eingebaut hast???
zeroblue2005
zeroblue2005 28.04.2019 um 10:11:38 Uhr
Goto Top
ahhhh ha stimmt....

So passt es....

for /r "D:\test1" %%a in ("*.*") do @if %%~za gtr 300000000 del "%%a" /f /q  

danke
em-pie
em-pie 28.04.2019 um 10:14:35 Uhr
Goto Top
Top,

dann noch schnell Wie kann ich einen Beitrag als gelöst markieren? und die Sache ist rund face-smile
139374
Lösung 139374 28.04.2019 aktualisiert um 10:29:22 Uhr
Goto Top
Sei dir aber bewusst das in Batch bei dieser Variante mit 2GB Files Schluss ist mit Vergleich.

https://www.robvanderwoude.com/battech_math.php

Besser gleich die Powershell bemühen.
gci 'd:\test1' -File -Recurse | ?{$_.Length -gt 500MB} | del -force -verbose  
zeroblue2005
zeroblue2005 28.04.2019 aktualisiert um 10:43:56 Uhr
Goto Top
Hallo,

alles klar geht so weit, jetzt würde ich gerne die Schleife in eine Ausgabe packen, das funktioniert aber nicht, die bleibt immer leer:

for /r "D:\Test1" %%a in ("*.*") do @if %%~za gtr 500000000 del "%%a" /f /q >> "D:\LOG\Geloescht-Gr-als-500.txt"  

@139374
bedeutet, wenn ich auf Dateien Prüfe: Größer als 500 MB würde die Dateien über 2 GB nicht gelöscht?
139374
139374 28.04.2019 aktualisiert um 11:10:50 Uhr
Goto Top
Zitat von @zeroblue2005:

@139374
bedeutet, wenn ich auf Dateien Prüfe: Größer als 500 MB würde die Dateien über 2 GB nicht gelöscht?
Doch schon aber die Größe der Datei wenn sie über 2GB groß ist würde im If Vergleich auf 2^31 - 1 begrenzt. D.h. ein 3GB File sieht für die Batch aus wie ein 2GB File.
https://stackoverflow.com/questions/44307575/if-greater-than-in-batch-fi ...

In deinem Fall ist das nicht schlimm, aber wenn du das mit anderen Größen erweitern willst erinnere dich an die Grenze.

Schleife in eine Ausgabe packen, das funktioniert aber nicht, die bleibt immer leer:
Logisch denn es gibt keine Ausgabe beim löschen, mach einfach eine zweite Ausgabe im If Teil.

for /r "D:\Test1" %%a in ("*.*") do (  
    if %%~za gtr 500000000 (
       del "%%a" && >>"D:\LOG\Geloescht-Gr-als-500.txt" echo.%%a  
    )
)
Oder auch
>"D:\LOG\Geloescht-Gr-als-500.txt" (for /r "D:\Test1" %%a in ("*.*") do (  
    if %%~za gtr 500000000 (
       del "%%a" && echo.%%a  
    )
))
zeroblue2005
zeroblue2005 28.04.2019 um 11:04:12 Uhr
Goto Top
Alles klar, werde ich berüchsichtigen....

Hast du zufällig auch die Lösung für mein Ausgabeproblem?
139374
Lösung 139374 28.04.2019 um 11:04:42 Uhr
Goto Top
S. Oben.
zeroblue2005
zeroblue2005 28.04.2019 um 11:06:22 Uhr
Goto Top
Ja habe ich gerade gesehen, was meinst du mit zweiten Teil if? Kannst du mir das erläutern, kurz?
139374
Lösung 139374 28.04.2019 um 11:07:16 Uhr
Goto Top
S.oben
zeroblue2005
zeroblue2005 28.04.2019 um 11:08:51 Uhr
Goto Top
Hat sich reledigt! Geschaft habe eine Vorschleife mit @echo gesetzt! Das passt!

Danke
139374
Lösung 139374 28.04.2019 aktualisiert um 11:10:03 Uhr
Goto Top
S. Doch einfach meinen letzten Post face-wink, da stehen zwei Codes... Da braucht es keine extra Schleife.
zeroblue2005
zeroblue2005 28.04.2019 um 11:25:31 Uhr
Goto Top
Hatte ich zu spät gesehen, dass du so schnell bist, habe ich ja nicht gedacht. Danke face-smile