Jump to content

Überlange Dateinamen per Script kürzen


Direkt zur Lösung Gelöst von MurdocX,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich stehe vor folgendem Problem:

 

Das Backup in der Firma läuft auf USB-Festplatten. Funktioniert grundsätzlich auch prima.

 

Etwa einmal im Monat muss ich aber ältere Backups von den Platten löschen, da sie ansonsten überlaufen. Unglücklicherweise befinden sich im Backup Dateien, deren Namen in Kombination mit dem Unterordner zu lang sind. Um die Dateien löschen zu können, verschiebe ich sie auf die oberste Ebene im Laufwerk und benenne die Ordner bis in die dritte Unterebene um, so, das die Ordnernamen nur noch aus einem einzigen Buchstaben oder Zahl bestehen. Dann erst kann ich sie komplett löschen.

 

Was ich benötige, wäre also ein Script, das alle in einem bestimmten Ordner befindlichen Ordner umbenennt (in irgend etwas kurzes), und das bis zur dritten Unterebene. In etwa also so:

 

post-48679-0-71174200-1444116317_thumb.jpg

 

Alternativ nehme ich auch gerne ein Skript, das die Ordner ohne Umbenennen löschen kann - das aber scheint nicht ohne weiteres möglich.

 

Hat jemand Vorschläge? :)

 

mfg

 

JM

bearbeitet von Moredread
Link zu diesem Kommentar
  • Beste Lösung

Ich hab für Dich ein Skript geschrieben, welche genau das macht, was du brauchst :)

Viel Spaß damit!

#requires -Version 3

function Invoke-RenameFolder
{
    param([STRING]$StartEbene,[STRING]$AktuelleEbene,[INT]$Tiefe)
    
    $StartTiefe = $StartEbene.Split('\').Count
    $Ordner = Get-ChildItem -Path $AktuelleEbene -Directory
        
    foreach($obj in $Ordner)
    {
        [INT]$AktuelleTiefe = ($obj.FullName.ToString()).Split('\').Count
        if (($AktuelleTiefe - $StartTiefe) -le $Tiefe)
        {
            Invoke-RenameFolder -StartEbene $StartEbene -AktuelleEbene $($obj.FullName) -Tiefe $Tiefe
        }
    }

    $SplittedPath = $AktuelleEbene.Split('\')
        
    For ($x = 0;$x -lt $($SplittedPath.Count-1))       
    {
        if ($JointPath -like '')
        {
            $JointPath = $SplittedPath[$x].ToString()
        }
        else
        {
            $JointPath = "$JointPath\$($SplittedPath[$x].ToString())"
        }
        $x++
    }
                
    do
    {
        $i++
        $result = Test-Path -Path "$JointPath\$i" # Wenn der Pfad existiert, dann Zähle eins höher
    }
    while ($result -eq $true)
                
    try
    {
        if ($AktuelleEbene -notlike $StartEbene)
        {
            Rename-Item -Path $AktuelleEbene -NewName $i -ErrorAction Stop
            Write-Host "[OK] Erfolgreich umbenannt: '$AktuelleEbene' > '$JointPath\$i'" -ForegroundColor Green
        }
    }
    catch
    {
        Write-Host "Fehler: $_" -ForegroundColor Red
    }
    
}

<# 
        !! INFO: START ist die Tiefe 0 !!
#>


[String]$START = 'D:\TEST'
[INT]$Tiefe = 2

Invoke-RenameFolder -StartEbene $START -AktuelleEbene $START -Tiefe $Tiefe
Link zu diesem Kommentar

 

Ich hab für Dich ein Skript geschrieben, welche genau das macht, was du brauchst :)

Viel Spaß damit!

#requires -Version 3

[...]
Invoke-RenameFolder -StartEbene $START -AktuelleEbene $START -Tiefe $Tiefe

 

 

Genial! Das Script mach exakt das, was ich brauche  :thumb1: 

 

Außerdem *weiß* ich jetzt, das ich mich unbedingt mit der Powershell auseinandersetzen muss. 

 

Vielen Dank! :)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...