Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Ordnernamen vergleichen

$
0
0

Hallo zusammen,

ich hab bisher nicht wirklich was nützliches dazu gefunden, deswegen hatte ich gehofft hier Hilfestellung zu erhalten.

Also zu meinem Problem:

Als erstes führe ich ein Backup von 2 Ordnern durch die als Unterordner in $date gespeichert werden.

Wenn die Festplatte zu voll wird, soll er alle Ordner (und deren Inhalt) löschen, die vom Namen her, älter als x-Tage sind.

Kommen wir erstmal zum Backup, damit ihr wisst wie die Ordner heißen:

# System Variable for backup Procedure
$date = Get-Date -Format d.MM.yyyy
$backup = "F:"
$heim = "E:\Home"
$desthome = "F:\$date\home"
$pathhome = test-Path $desthome


# Check Home Path
if ( $(Try { Test-Path $heim.trim() } Catch { $true }) ) {
   Write-Host "Path $heim OK"
 }
else {
   Write-Host "Path $heim not found"
   Exit
 }

# Starting Home Backup Process
 if ($pathhome -eq $true) {
    Exit
    } elseif ($pathhome -eq $false) {
            cd $backup
            mkdir $date
            cd $date
            mkdir home
            Write-Host "Home erstellt"
	        Copy-Item  -Recurse $heim -Destination $desthome
            $backup_log = Dir -Recurse $desthome | out-File "$desthome\backup_log.txt"
             }

Dazu wird noch ein weiterer Ordner gesichtert den ich aber erstmal rausgenommen hab.

Kommen wir zum Löschen der Dateien:

# Checking remaining disk space
$laufwerk = Get-WmiObject -class win32_logicalDisk
    ForEach ($element in $laufwerk){
    if ($element.DeviceID -eq "C:"){
        $laufwerk = $element.FreeSpace/1GB
        $laufwerk = $laufwerk|Out-String
        $laufwerk = $laufwerk.Split(",")
        $frei = $laufwerk[0]
        $frei = [int]$frei
        Write-Host $frei
}
}

# Deleting old files, when not enough space is left
if ($frei -le 200){
    $DatumVor40Tagen = (Get-Date).AddDays(-40)
    $DatumVor40Tagen = $DatumVor40Tagen.ToString("dd.MM.yyyy")
    Write-Host $DatumVor40Tagen
    dir "C:\Users\User\Backup" | where {$_.name -lt $DatumVor40Tagen} #|% {remove-item $_.fullname -recurse -whatif -verbose}
}
else {
    Write-Host "Es sind noch" $frei "GB freier Speicherplatz vorhanden"

Der Pfad beim Löschen ist nur ein Testpfad und entspricht deswegen nicht den Pfaden oben.

Beim testen vergleicht er zwar die Namen halbwegs richtig, allerdings eben nicht gänzlich.

Ein ähnliches Problem hatte ich beim Check des freien Festplattenspeichers, wo er einen String mit einem Integer vergleichen wollte und ich deswegen beides umgewandelt habe.

Das kann ich hier natürlich nicht machen, da ich ja beispielsweise 14.01.2016 nicht einfach umwandeln kann, da ja mehrere Punkte vorhanden sind.

Ich hoffe einer von euch hat eine Idee und kann mir weiterhelfen.

Danke im Voraus

Lotosdenta


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>