zeroblue2005
Goto Top

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

Content-Key: 445814

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

Printed on: April 18, 2024 at 11:04 o'clock

Member: em-pie
em-pie Apr 28, 2019 at 07:46:20 (UTC)
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
Member: zeroblue2005
zeroblue2005 Apr 28, 2019 updated at 07:50:26 (UTC)
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?
Member: em-pie
em-pie Apr 28, 2019 at 07:53:51 (UTC)
Goto Top
Weil du ein @echo vor dem Delete eingebaut hast???
Member: zeroblue2005
zeroblue2005 Apr 28, 2019 at 08:11:38 (UTC)
Goto Top
ahhhh ha stimmt....

So passt es....

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

danke
Member: em-pie
em-pie Apr 28, 2019 at 08:14:35 (UTC)
Goto Top
Top,

dann noch schnell How can I mark a post as solved? und die Sache ist rund face-smile
Mitglied: 139374
Solution 139374 Apr 28, 2019 updated at 08:29:22 (UTC)
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  
Member: zeroblue2005
zeroblue2005 Apr 28, 2019 updated at 08:43:56 (UTC)
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?
Mitglied: 139374
139374 Apr 28, 2019 updated at 09:10:50 (UTC)
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  
    )
))
Member: zeroblue2005
zeroblue2005 Apr 28, 2019 at 09:04:12 (UTC)
Goto Top
Alles klar, werde ich berüchsichtigen....

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

Danke
Mitglied: 139374
Solution 139374 Apr 28, 2019 updated at 09:10:03 (UTC)
Goto Top
S. Doch einfach meinen letzten Post face-wink, da stehen zwei Codes... Da braucht es keine extra Schleife.
Member: zeroblue2005
zeroblue2005 Apr 28, 2019 at 09:25:31 (UTC)
Goto Top
Hatte ich zu spät gesehen, dass du so schnell bist, habe ich ja nicht gedacht. Danke face-smile