Zum Inhalt springen
IT Explorations

Suchen & Umbenennen von Dateinamen mit Powershell

· 1 min Lesezeit · von

Kurz & knapp: Das PowerShell-Skript durchsucht Dateinamen in einer Ordnerstruktur rekursiv nach einem Begriff und benennt sie auf Wunsch um. Standardmäßig (Schalter -Ersetzen nicht gesetzt) werden nur die Treffer angezeigt; erst mit -Ersetzen wird tatsächlich umbenannt.

Erläuterung#

Dieses Skript sucht nach einem gewünschten Begriff in Dateinamen und entfernt / umbenennt diesen, falls der Schalter $Ersetzen auf $true gesetzt wurde. Steht $Ersetzen auf $false (Standard), dann wird nur nach den Dateinamen gesucht, die den Begriff beinhalten, und es wird keine Änderung durchgeführt.

Skript#

#
# Autor: Jan Weis
# Version: 0.1
# www.it-explorations.de
#

#requires -Version 3
param
(
    [Parameter(Mandatory = $true)][String]$RootVerzeichnis = 'C:\Test',
    [Parameter(Mandatory = $true)][String]$SuchenNach = 'Log',
    [String]$ErsetzenDurch = 'LOgFF',
    [Switch]$Ersetzen
)

ForEach ($File in (Get-ChildItem -Path $RootVerzeichnis -Recurse -File | Where-Object -FilterScript {
            $_.Name -like "*$SuchenNach*"
        }
))
{
    try
    {
        $Dateiname = ($File.Name).ToString()
        $Dateiname = $Dateiname.Replace($SuchenNach,$ErsetzenDurch)
        
        if ($Ersetzen)
        {
            Write-Host -Object "> Umbenennen: $($File.BaseName) " -NoNewline
            Rename-Item -Path ($File.FullName) -NewName $Dateiname
            Write-Host -Object 'OK!' -ForegroundColor Green
        }
        else
        {
            Write-Host -Object "> Nur Suchen: $($File.BaseName)"
        }
    }
    catch
    {
        "Error was $_"
        $line = $_.InvocationInfo.ScriptLineNumber
        "Error was in Line $line"
    }
}

Kategorien: Skripte

Verwandte Beiträge