Initial
This commit is contained in:
parent
faf2be8238
commit
ea469ba167
12
README.md
12
README.md
@ -1,2 +1,12 @@
|
||||
# win-cleanoldfiles
|
||||
# Automatisches löschen von Dateien und Ordnern
|
||||
|
||||
Dieses PowerShell-Skript dient dazu, Dateien und Verzeichnisse in einem angegebenen Verzeichnis zu löschen, die älter als ein bestimmter Zeitraum sind. Es ermöglicht eine effiziente Bereinigung von nicht mehr benötigten Daten.
|
||||
Das Skript ist nützlich für die Wartung von Speicherplatz und die Aufrechterhaltung einer sauberen Verzeichnisstruktur.
|
||||
|
||||
## Anzupassende Variablen:
|
||||
|
||||
**$Verzeichnis** = "D:\Pfad\zum\Verzeichnis"
|
||||
|
||||
**$ZeitrahmenInTagen** = 365
|
||||
|
||||
**$LogPfad** = "C:\logs\CleanOldFiles.log"
|
55
WIN-CleanOldFiles.ps1
Normal file
55
WIN-CleanOldFiles.ps1
Normal file
@ -0,0 +1,55 @@
|
||||
# Script Name: WIN-CleanOldFiles.ps1
|
||||
# Beschreibung: Löscht Dateien und Verzeichnisse, die älter als ein definierter Zeitraum sind
|
||||
# Aufruf: -
|
||||
# Autor: Patrick Asmus
|
||||
# Web: https://www.media-techport.de
|
||||
# Git-Reposit.: https://git.media-techport.de/scriptos/win-cleanoldfiles.git
|
||||
# Version: 1.0
|
||||
# Datum: 08.11.2023
|
||||
# Modifikation: Initial
|
||||
#####################################################
|
||||
|
||||
# Variablen
|
||||
$Verzeichnis = "D:\temp"
|
||||
$ZeitrahmenInTagen = 730
|
||||
$LogPfad = "C:\logs\CleanOldFiles.log"
|
||||
|
||||
# Berechnung Startdatum des Zeitrahmens
|
||||
$Startdatum = (Get-Date).AddDays(-$ZeitrahmenInTagen)
|
||||
$GelöschtdurchScriptAm = Get-Date
|
||||
|
||||
# Funktion zur Formatierung des Datums im deutschen Stil
|
||||
function Format-DeutschesDatum ([datetime] $date) {
|
||||
return $date.ToString("dd.MM.yyyy")
|
||||
}
|
||||
|
||||
# Lösche Dateien und Verzeichnisse, die älter als der angegebene Zeitraum sind
|
||||
$GelöschteDateien = @()
|
||||
$GelöschteVerzeichnisse = @()
|
||||
|
||||
Get-ChildItem -Path $Verzeichnis -Recurse | ForEach-Object {
|
||||
if ($_.LastWriteTime -lt $Startdatum) {
|
||||
if ($_.PSIsContainer) {
|
||||
$_ | Remove-Item -Force -Recurse
|
||||
$GelöschteVerzeichnisse += $_.FullName
|
||||
$LogMeldung = "Ordner gelöscht am: $(Format-DeutschesDatum $GelöschtdurchScriptAm) | $($_.FullName)"
|
||||
Write-Output $LogMeldung
|
||||
$LogMeldung | Out-File -Append -FilePath $LogPfad
|
||||
} else {
|
||||
$_ | Remove-Item -Force
|
||||
$GelöschteDateien += $_.FullName
|
||||
$LogMeldung = "Datei gelöscht am: $(Format-DeutschesDatum $GelöschtdurchScriptAm) | Letzte Änderung: $(Format-DeutschesDatum $_.LastWriteTime) | $($_.FullName)"
|
||||
Write-Output $LogMeldung
|
||||
$LogMeldung | Out-File -Append -FilePath $LogPfad
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Überprüfe, ob das Verzeichnis leer ist, und entferne es gegebenenfalls
|
||||
if ((Get-ChildItem -Path $Verzeichnis | Measure-Object).Count -eq 0) {
|
||||
Remove-Item -Path $Verzeichnis -Force -Recurse
|
||||
$GelöschteVerzeichnisse += $Verzeichnis
|
||||
$LogMeldung = "Ordner gelöscht am: $(Format-DeutschesDatum $GelöschtdurchScriptAm) | $Verzeichnis"
|
||||
Write-Output $LogMeldung
|
||||
$LogMeldung | Out-File -Append -FilePath $LogPfad
|
||||
}
|
Loading…
Reference in New Issue
Block a user