Supportnet Computer
Planet of Tech

Supportnet / Forum / BS-Sonstige

jede x-te Datei behalten Rest löschen





Frage

Hallo, ich hoffe das es für euch kein Problem ist! hier mein Problem/Wunsch: Auf dem Verzeichnis befinden sich Dateien von z.B. <Datei1> bis <Datei123> Nun möchte ich jede 3 oder 4 Datei (kann durch Parameter beim Aufruf der Batch-Datei gesteuert werden) behalten und den Rest löschen. Danke und Gruss, Peter

Antwort 1 von Annndy

ähhmm...

also wenn ich dich richtig verstanden habe dann ist das das was du suchst:

@echo off
set andy=0

set haha=%1
set hahaa=%2
if not %haha%'==' goto xy

echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³------NIX!! Parammaedder nidde uebergebbe!------³
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
goto exit



:xy
if %andy% GTR %haha2% goto exit
set /a andy=%andy%+%haha%
if not exist datei%andy%.aab goto exit
del datei%andy%.aab
echo Datei%andy%.aab Geloescht!
goto xy


:exit
pause


das ruft man dann z.B. so auf

blabla.bat [die jewileige datei die gelöscht werden soll( bei 3 wird datei3 datei6 datei9 datei12 usw gelöscht)] [bis zu welcher zahl]

wenn du also jede 3 datei bis zur datei 123 löschen wilst geht das so

hoi.bat 3 123

Antwort 2 von ppeter

Danke Annndy,

ich habe gedacht das es mit dem Befehl
dir /B /o-d d3* > dir.txt

alle dateien die mit d3* beginnen id die dir.txt schreibe und jetzt aus der Datei zeilenweise lese und lösche bzw. nicht lösche.

die erste Datei behalte!

danach 3-Dateien lösche
die nächste überspringen
und weiter mit löschen

die letzte datei nicht löschen!

es sieht dan so aus:
d3plog01, d3plog04, d3plog07, ... letzte Datei

Danke für die Tipps!



Antwort 3 von Annndy

achso...

hab das dort irgendwie falsch verstanden...

werd mich gleich mal damit befassen..

Antwort 4 von manei

Hallo,

wenn du die erste, die vierte, die siebente usw. bis hin zur letzten behalten willst, werden nur 2 Dateien dazwischen gelöscht.

Der dir-Befehl wird benötigt, um die Gesamtanzahl der Dateien zu ermitteln, zum verarbeiten aber nicht brauchbar, da die Dateien direkt innerhalb einer Doppelschleife angesprochen werden müssen. Hier das Ergebnis:

@echo off
cls
set /a x=0
for /f %%e in ('dir /B /o-d d3*') do set /a x+=1 & echo %%e>nul
set /a x-=1
set /a x1=0

:st1
set /a x1+=1
set y=0
:st12
if %x1% gtr %x% goto st2
set /a x1+=1
if %x1%geq 10 goto st11
del d3plog0%x1%.???
goto st111
:st11
del d3plog%x1%.???
:st111
set /a y+=1
if %y%==2 goto st1
goto st12

:st2
echo alle Dateien gelöscht
pause

:end
cls

Du kannst das mal testen, indem Du vor die del-Zeilen ein rem setzt und darunter 2 Ziel setzt wie:
rem del d3plog0%x1%.???
echo 0%x1%
pause

und das nächste del genauso.

Willst du dazwischen 3 Dateien löschen, mußt du nur in der Zeile "if %y%==2 goto st1" die 2 in 3 abändern.

Da nur bis zur vorletzten Datei verarbeitet wird, bleibt die letzte Datei auf jeden Fall immer erhalten.

MfG maneich






Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: