ghost-in-the-shell
Goto Top

Dateien durch Attribute löschen

Hallo Welt,
ich brauch bitte Hilfe. Und zwar hab ich in einem Verzeichnis eine oder mehrere Dateien mit der Endung .xyz!

Ist nur eine Datei mit der Endung .xyz vorhanden soll nichts passieren, gibt es mehrere, dann sollen alle gelöscht werden bis auf die mit dem aktuellstem Änderungsdatum.

Sicherlich ganz einfach für einen Batch Geek. Ich sitz da drüber wie n Depp. Check die Syntax irgendwie ned richtig....
Wäre super wenn mir einer schnell helfen könnte....

Danke

Content-ID: 49886

Url: https://administrator.de/forum/dateien-durch-attribute-loeschen-49886.html

Ausgedruckt am: 22.04.2025 um 17:04 Uhr

bastla
bastla 26.01.2007 um 08:23:58 Uhr
Goto Top
Hallo BO2!

Probier mal
@echo off & setlocal EnableDelayedExpansion
set Basis=D:\ADM
set Typ=*.xyz
set WegDamit=False
for /f "delims=" %%i in ('dir /b /o-d %Basis%\%Typ%') do (  
	if !WegDamit!==True del "%Basis%\%%i"  
	set WegDamit=True
)

HTH
bastla

[Edit] Und schon wieder auf "delims=" vergessen ... [/Edit]
Biber
Biber 26.01.2007 um 09:30:53 Uhr
Goto Top
Moin BO2 und bastla,

Oder:
for /f "skip=1 delims=" %i in ('dir /b /o:-d /A-d "D:\ADM\*.xyz"') do @del "%i"
[vom CMD-Prompt]

-bzw. als Variation von bastla's Skizze im Batch:
::----snipp DeleteAllButActual.bat
@echo off & setlocal
set Basis=D:\ADM
set Typ=*.xyz
for /f "skip=1 delims=" %%i in ('dir /b /o:-d /A-d "%basis%\%Typ%"') do @del  "%%i"  
::----snapp DeleteAllButActual.bat
[Edit]
Na gut...Variablen definieren, die nur ein einziges Mal angesprochen werden, ist nun auch Dönekens..
::----snipp DeleteAllButActual.bat
@for /f "skip=1 delims=" %%i in ('dir /b /o:-d /A-d "D:\ADM\*.xyz"') do @del  "%%i"  
::----snapp DeleteAllButActual.bat
..."skip=1"==>einen Eintrag überspringen, "skip=2"==>2 Zeilen überspringen etc.
S. unten miniversums Hinweis.
[/Edit]

Gruß
Biber
miniversum
miniversum 26.01.2007 um 10:17:43 Uhr
Goto Top
Warum skip=2??
Sollte es nicht skip=1 sein wenn er nur die aktuellste übrig haben will, oder mach ich grade nen Denkfehler?

Also so:
@for /f "skip=1 delims=" %%i in ('dir /b /o:-d /A-d "D:\ADM\*.xyz"') do @del "%%i"

miniversum
Biber
Biber 26.01.2007 um 10:33:05 Uhr
Goto Top
@miniversum

Doch, klar... natürlich nur die erste mit "skip=1" auslassen...
Hatte nebenbei telefoniert.. *gg
Ich ändere es oben im Source.

Danke und schönes Wochenende
Biber