PowerShell-Skript zum Löschen von Dateien, die älter als X Tage sind

Wenn Ihr Ordner ständig voll wird, stellt das Löschen alter Dateien nicht nur wertvollen Speicherplatz wieder her, sondern erleichtert auch die Verwaltung des Ordners. Während Sie das Verzeichnis manuell scannen und alte Dateien entfernen können, können Sie Ihr Leben mit der Magie der PowerShell-Automatisierung viel einfacher machen. Durch Ausführen des folgenden Skripts können Sie automatisch alle Dateien löschen, die älter als eine angegebene Anzahl von Tagen sind, beispielsweise 90 Tage.

Ich habe dieses Skript in Anlehnung an die Storage Sense-Funktion von Windows erstellt, die ältere Dateien automatisch aus dem Papierkorb und dem Ordner „Downloads“ löscht. Während Storage Sense auf diese beiden Ordner beschränkt ist, können Sie in meinem Skript ein beliebiges Verzeichnis und die Anzahl der Tage angeben, die gewartet werden soll, bevor eine Datei gelöscht wird.

Advertisement

Lassen Sie mich Ihnen also ohne weitere Umschweife das PowerShell-Skript zum Löschen von Dateien vorstellen, die älter als X Tage sind, und Ihnen zeigen, wie Sie es manuell und nach Zeitplan ausführen können.

PowerShell-Skript zum automatischen Löschen von Dateien, die älter als X Tage sind

<#
  Script Name: Delete Old Files
  Description: This script forcefully deletes files not modified in a user-specified number of days. 90 Days, by default.
  Author: Bashkarla Vamsi
  URL: https://windowsloop.com
#>

# Set the directory path directly in the script
$folderPath = ""  # Add folder path between quotes. For example: "C:UsersYourUsernameDocumentsTargetFolder"

# Set the number of days to wait before deleting a file
$days = 90  # Change this value if necessary. Default = 90

# Check if the folderPath variable is set
if ($folderPath -eq "") {
   Write-Host "Error: The folder path is not set. Please edit the script and set the `$folderPath` variable to the directory you wish to clean."
   exit 1  # Exit with error code 1 when no path is set
} elseif (Test-Path $folderPath) {
   # Get today's date
   $currentDate = Get-Date

   # Calculate the date limit based on user-specified days
   $dateLimit = $currentDate.AddDays(-$days)

   # Get all the files in the folder
   $files = Get-ChildItem -Path $folderPath -File

   # Loop through each file
   foreach ($file in $files) {
       # Check if the file's last modified time is older than the specified number of days
       if ($file.LastWriteTime -lt $dateLimit) {
           # Delete the file forcefully
           Remove-Item $file.FullName -Force
           Write-Host "Deleted: $($file.FullName)"
       }
   }
   Write-Host "Cleanup complete."
   exit 0
} else {
   Write-Host "Error: The folder path '$folderPath' does not exist or is not accessible. Please verify the path and ensure it is correct. Edit the script to update the path if necessary."
   exit 1  # Exit with error code 1 when the path does not exist
}

Hier finden Sie einen kurzen Überblick darüber, wie das Skript funktioniert und wie Sie es an Ihre Bedürfnisse anpassen können:

Advertisement

Skriptanpassung

Verzeichnispfad ($folderPath): Hier geben Sie den Ordnerpfad an, aus dem Sie alte Dateien löschen möchten. Ersetzen Sie einfach den Dummy-Pfad C:UsersYourUsernameDocumentsTargetFolder mit dem tatsächlichen Pfad. Achten Sie darauf, den Pfad in Anführungszeichen einzugeben.

Anzahl der Tage ($days): Diese Variable bestimmt, wie alt die Dateien sein müssen, bevor sie gelöscht werden. Standardmäßig ist diese Variable auf 90 gesetzt. Das bedeutet, dass das Skript Dateien löscht, die älter als 90 Tage sind. Sie können diesen Wert in jede für Sie passende Zahl ändern. Um beispielsweise 120 Tage zu warten, bevor Dateien gelöscht werden, ändern Sie einfach 90 in 120.

Erläuterung: Wie funktioniert das Skript?

Zunächst prüft das Skript, ob der angegebene Ordner existiert. Wenn es existiert, erhält es das heutige Datum mit dem Verabredung bekommen Cmdlet und subtrahiert die Anzahl der vom Benutzer angegebenen Tage, um das Datumslimit zu ermitteln.

Als nächstes listet es alle Dateien im angegebenen Ordner auf Get-ChildItem Wenn das Datum der letzten Änderung vor dem Datumslimit liegt, wird für jede Datei die Datei mit dem Cmdlet gelöscht Gegenstand entfernen Cmdlet.

Wenn Sie keinen Ordnerpfad eingegeben haben oder der Ordner nicht existiert, stoppt das Skript die Ausführung und zeigt die Fehlermeldung mit an Schreib-Host Cmdlet.

Schritte zum Ausführen des PowerShell-Skripts

Bevor Sie beginnen (Vorsicht)

  • Das Skript löscht die Dateien dauerhaft (dh es überspringt den Papierkorb) und es gibt keine Option zum Rückgängigmachen. Also sei vorsichtig.
  • Testen Sie das Skript immer zuerst in einem Test- oder unkritischen Ordner. Sobald Sie sichergestellt haben, dass es Ihren Erwartungen entspricht, verwenden Sie es erst dann für den tatsächlichen Ordner.
  • Wenn die Dateien wichtig sind, sorgen Sie dafür, dass sie regelmäßig gesichert werden.

Schritte

Befolgen Sie diese Schritte, um das Skript zum Löschen von Dateien auszuführen, die älter als eine angegebene Anzahl von Tagen in einem Ordner sind:

Speichern Sie das Skript

1. Öffnen Notizblock aus dem Startmenü.

2. Kopieren das obige Skript und Paste es in Notepad.

3. Ändern Sie die $folderPath Variable, um den Ordnerpfad zwischen Anführungszeichen hinzuzufügen.

4. Ändern Sie optional die $Tage Variable, um zu ändern, wie alt die Dateien sein sollen, bevor sie gelöscht werden. Der Standardwert beträgt 90 Tage.

Fügen Sie den Ordnerpfad im PowerShell-Skript hinzu

5. Wählen Sie Datei > Speichern.

Speichern Sie das PowerShell-Skript

6. Gehen Sie zu einem Ordner wo Sie die Datei speichern möchten.

7. Geben Sie ein OldFiles.ps1 löschen im Feld „Dateiname“ ein.

8. Wählen Sie Alle Dateien aus dem Dropdown-Menü „Dateityp“.

9. Klicken Sie Speichern.

Legen Sie den Namen der PowerShell-Skriptdatei fest und klicken Sie auf Speichern

Notiz: Sie können das Skript auch von meiner GitHub-Seite herunterladen, es mit Notepad öffnen, die Variablen „$folderPath“ und „$days“ nach Bedarf ändern und es speichern.

Führen Sie das Skript aus

Um das Skript auszuführen, führen Sie die folgenden Schritte aus:

1. Drücken Sie die Taste Start Taste.

2. Suchen Sie nach Windows PowerShell und klicken Als Administrator ausführen.

Öffnen Sie PowerShell als Administrator

3. Führen Sie den folgenden Befehl aus vorübergehend Ändern Sie die Ausführungsrichtlinie in „uneingeschränkt“.

Set-ExecutionPolicy -ExecutionPolicy unrestricted -Scope Process

4. Geben Sie ein A und drücke Eingeben.

Ausführungsrichtlinie vorübergehend ändern

5. Navigieren Sie mit dem folgenden Befehl zum Ordner mit der Skriptdatei.

cd "C:pathtoscriptfolder"

Navigieren Sie mit dem PowerShell-Skript zum Ordner

6. Geben Sie Folgendes ein Befehl zum Ausführen des Skripts. Wenn Sie einen anderen Namen für das Skript verwendet haben, ändern Sie den Befehl entsprechend.

."DeleteOldFiles.ps1"

Führen Sie das PowerShell-Skript aus

Sobald Sie das Skript ausführen, scannt es den Ordner und löscht alle Dateien, die älter als die angegebene Anzahl von Tagen sind. Sobald Sie fertig sind, wird die Meldung „Bereinigung abgeschlossen“ angezeigt.

PowerShell-Skript ausgeführt, um Dateien zu löschen, die älter als x Tage sind

Notiz: Wenn Sie die Ausführungsrichtlinie nicht jedes Mal ändern möchten, wenn Sie ein PowerShell-Skript ausführen, ändern Sie die Ausführungsrichtlinie dauerhaft.

Planen Sie das Skript mit dem Taskplaner

Wenn Sie das PowerShell-Skript planmäßig (zu einem bestimmten Zeitpunkt oder Ereignis) ausführen möchten, können Sie den Taskplaner verwenden. Ich habe bereits eine ausführliche Anleitung dazu geschrieben. Befolgen Sie die Schritte in diesem Artikel.

Wrapping – PowerShell-Automatisierungsskript zum Löschen alter Dateien

Wie Sie sehen, erleichtert die PowerShell-Automatisierung das Löschen älterer Dateien. Stellen Sie bei der Verwendung des Skripts sicher, dass Sie den Ordnerpfad und die Anzahl der Tage anpassen, damit das Skript ordnungsgemäß und Ihren Anforderungen entsprechend funktioniert. Bedenken Sie außerdem, dass die Dateien beim Ausführen des Skripts dauerhaft gelöscht werden und nicht rückgängig gemacht werden können. Seien Sie also vorsichtig und testen Sie das Skript in einem Testordner, bevor Sie es in einem echten Ordner verwenden. Wenn Sie möchten, dass das Skript automatisch ausgeführt wird, verwenden Sie den Taskplaner, um es zu planen.

Wenn Sie Fragen haben oder Hilfe benötigen, kommentieren Sie unten. Ich werde sie beantworten.

Verwandt:

Advertisement