tomtom73
Goto Top

LöschScript erweitern um x-Tage nicht zu löschen

Hallo zusammen,

ich habe ein kleine Herausforderung bei der ich eure Hilfe benötige.
Habe folgendes Löschscript, welches mir alle Dateien löscht , ausser die Benannten in Exclude.

Nun soll ich aber in den anderen Verzeichnissen die mit diesem Script gelöscht werden nur die Dateien löschen die älter als 30 Tage sind und die erste OrdnerStufe soll nun auch nicht gelöscht werden sondern nur alle darunter.

Habt ihr ne Idee wie ich das realisieren kann ? Hoffe ihr könnt mir weiterhelfen.

hier das derzeitige script:
@echo off & setlocal

set "SrcDir=D:\TestzumLoeschen"    
set "Exclude="App" "Data""    

del /q "%SrcDir%\*.*" 2>NUL    

set "DoNotDelete="    

for /f "delims=" %%d in ('dir /b /a:d "%SrcDir%"') do (    
  for %%e in (%Exclude%) do (
    if "%%d" equ "%%~e" set "DoNotDelete=1"    
  )

  if not defined DoNotDelete rd /s /q "%SrcDir%\%%d"    
  set "DoNotDelete="    
)

Content-Key: 52401145473

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

Printed on: June 6, 2024 at 13:06 o'clock

Member: elix2k
Solution elix2k Dec 04, 2023 at 14:18:10 (UTC)
Goto Top
Hier ein Powershell-Skript. Bringt dich bestimmt weiter...

# Beschreibung:
# Dieses Skript löscht Dateien, die eine bestimmte Anzahl von Tagen alt sind. Die Dateierweiterungen, das Alter sowie der Ablageort sind definierbar.
# Der Löschvorgang erstreckt sich auf alle Unterordner
# Alle Operationen werden in einem Logfile im Quellordner gespeichert
#
# Hier können Sie den Quellordner, das Alter der Dateien (in Tagen) und die Dateierweiterungen festlegen

$Source = "X:\Temp\"		# Wichtig: muss mit "\" enden  
$Days = 365 # Anzahl der Tage, nach denen die Dateien gelöscht werden
$ext = "*.*"		# Array - erweitern mit  ,".xyz"   
$log = "$Source$(get-date -format yymmddHHmmss).txt"  
$DateBeforeXDays = (Get-Date).AddDays(-$Days)

# Start Script
start-transcript $log
write-host "--------------------------------------------------------------------------------------"  
write-host "Löschen aller Dateien ($ext) im Ordner $Source die Älter sind als $Days Tage."  
write-host "--------------------------------------------------------------------------------------"  
get-childitem $Source* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays -and -not $_.psiscontainer} | remove-item -force -verbose
stop-transcript
Member: anteNope
anteNope Dec 04, 2023 at 14:59:33 (UTC)
Goto Top
Hallo,
wie wäre es mit forfiles?

Forfiles /P "E:\Ordner" /S /M *.* /D -8 /C "cmd /c del /q @path"  

/P E:\Ordner : Pfad auf dem die Suche gestartet werden soll
/S : Bitte mit allen Unterordnern
/M *.* : Suchmaske - hier alle Dateien (ausser denen ohne Dateiendung)
/D -8 : Letztes Änderungsdatum älter als 8 Tage zum heutigen Datum
/C "cmd /c del /q @path" : Befehl der mit diesen Dateien ausgeführt werden soll (hier löschen)
Member: TomTom73
TomTom73 Dec 04, 2023 at 15:15:30 (UTC)
Goto Top
vielen vielen dank