Beschreibung
Ein kleines Script welches in einem angegebenen Verzeichnis alle Dateien, die einem Filter entsprechen, in ein tägliches ZIP Archiv überführen. Berücksichtigt wird das Bearbeitungsdatum. Nach dem erfolgreichen hinzufügen zu einem Archiv wird die Original Datei gelöscht.
Entstanden ist das Script, da eine Anwendung die Logdateien von einem Programm meine Festplatte voll geschrieben haben.
Parameter
Die Parameter werden im Script hinterlegt! Es ist keine klassische Funktion kann aber ohne Aufwand in eine geändert werden.
Parameter Name | Parameter Wert |
---|---|
$strPath | Pfad in dem nach den zu archivierenden Dateien gesucht werden soll |
$intDays | Bis wieviel Tage zum aktuellen Datum sollen die Dateien archiviert werden? |
$strFilter | Dateinamen Filter. (z.B. *.log) |
Code
clear-host $strPath = "d:\WindowsUpdate" $intDays = -1 $strFilter = "*.etl" write-host "Check the Path $strPath for Files with Filter $strFilter that are older than $intDays Day(s) and compress them in a ZIP file for every day!" $files = Get-ChildItem -Filter $strFilter -Path $strPath | SELECT Name, LastWriteTime $CurrentDay = Get-Date $CurrentDay = $CurrentDay.AddDays($intDays) for ($i=0;$i -lt $files.count; $i++) { $datum = Get-Date $files[$i].LastWriteTime $strDatum = Get-Date $files[$i].LastWriteTime -Format yyyyMMdd if ($datum -le $CurrentDay){ $zipfilename = $strpath + "\" + $strDatum + ".zip" $fileToZip = $strpath + "\" + $files[$i].Name write-host "Put $fileToZip in $zipfilename!" if (Test-Path ($zipfilename)){ $compress = Compress-Archive -LiteralPath $fileToZip -Update -DestinationPath $zipfilename }else{ Compress-Archive -LiteralPath $fileToZip -CompressionLevel Optimal -DestinationPath $zipfilename } Remove-Item $fileToZip } }
Download

PowerShell ZIP_files_older_than-X-Days_in_a_daily_archiv.ps1
1 Datei(en) 1.05 KB