Suchen & Umbenennen von Dateinamen mit Powershell
Kurz & knapp: Das PowerShell-Skript durchsucht Dateinamen in einer Ordnerstruktur rekursiv nach einem Begriff und benennt sie auf Wunsch um. Standardmäßig (Schalter
-Ersetzennicht gesetzt) werden nur die Treffer angezeigt; erst mit-Ersetzenwird 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