Suchen & Umbenennen von Dateinamen mit Powershell

Suchen & Umbenennen von Dateinamen mit Powershell

Erläuterung

// Suchen & Umbenennen von Dateinamen mit Powershell //
Dieses Skript sucht nach einem gewünschten Begriff in Dateinamen und entfernt / umbenennt diesen, falls der „Ersetzen“ auf $True gesetzt wurde, um. Steht „Ersetzen“ auf $False (default) dann werden nur nach den Dateinamen die den Begriff beinhalten gesucht 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"
    }
}