bahnski
Goto Top

RENAME-ITEM findet die Datei nicht

Hallo,
ich habe ein Problem mit besonderen Zeichen in Dateinamen, wenn ein Script diese umbenennen soll.
In meinem Beispiel habe ich eine Dateien mit dem Namen "Ritter-Kunibert[S;1234567890;DE,EN].jpg"
Es wird überprüft ob die Datei existiert und dann wird die Datei umbenannt. Das Überprüfen klappt, aber das umbenennen nicht.
Mein BeispielCode
$Folder = "D:\Grafik\TestFile\"  
$Files = get-childitem -Path $Folder 
foreach ($File in $Files){
    $FullName =[WildcardPattern]::Escape($File.FullName)
    if ((Test-Path  $FullName -PathType Any)){
        Write-Host "Datei $Fullname existiert!" -ForegroundColor Green  
        $NewName = "Ritter-Kunibert der 2.[S;1234567890;DE,EN].jpg"  
        rename-item -Path "$FullName" -NewName "$NewName"  
    }else{
        Write-Host "Datei $Fullname existiert nicht!" -ForegroundColor Red  
    }
}

Ob ich nun WildcardPattern nutze oder nicht. Bringt immer den gleichen Fehler. Wie schaffe ich es das Rename-Item mit Dateinamen und Pfade umgehen kann, wenn z.B diese Klammern [] drin vorkommen

Für jede Hilde, Anregung bin ich dankbar

Content-Key: 3377455261

Url: https://administrator.de/contentid/3377455261

Printed on: June 30, 2024 at 23:06 o'clock

Member: Pjordorf
Pjordorf Jun 28, 2024 at 19:04:21 (UTC)
Goto Top
Hallo,

Zitat von @bahnski:
Ob ich nun WildcardPattern nutze oder nicht. Bringt immer den gleichen Fehler.
Und ist dein Fehler schon Volljährig und darf auch raus? Ansonsten schauen wir mal in Alten Büchern was dort an Fehlermeldungen steht und wir nehmen die 31428 dann (nein, das ist nicht Pi) face-smile

Gruss,
Peter
Member: WolleRoseKaufe
Solution WolleRoseKaufe Jun 28, 2024, updated at Jun 29, 2024 at 06:37:03 (UTC)
Goto Top
LiteralPath Parameter ist dein Freund
$Folder = "D:\Grafik\TestFile\"    
$Files = get-childitem -LiteralPath $Folder -File | select -First 1
foreach ($File in $Files){
    $NewName = 'Ritter-Kunibert der 2.[S;1234567890;DE,EN].jpg'  
    rename-item -LiteralPath $file.Fullname -NewName $NewName -force
}
Bei Verwendung von "Path" Parametern werden immer special chars interpretiert, LiteralPath dagegen macht das nicht und verwendet den Namen so wie er ist.
Die eckigen Klammern [] bezeichnen nämlich eine Auswahl an möglichen Zeichen als Platzhalter.
Guckst du das Beispiel

-LiteralPath
Gibt den aufzulösenden Pfad an. Der Wert des LiteralPath-Parameters wird genau wie eingegeben verwendet. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, schließen Sie ihn in einfache Anführungszeichen (') ein. Einfache Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren
Member: bahnski
bahnski Jun 29, 2024 at 09:03:32 (UTC)
Goto Top
Danke