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-Key: 49886

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

Printed on: April 25, 2024 at 13:04 o'clock

Member: bastla
bastla Jan 26, 2007 at 07:23:58 (UTC)
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]
Member: Biber
Biber Jan 26, 2007 at 08:30:53 (UTC)
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
Member: miniversum
miniversum Jan 26, 2007 at 09:17:43 (UTC)
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
Member: Biber
Biber Jan 26, 2007 at 09:33:05 (UTC)
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