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
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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 3377455261
Url: https://administrator.de/contentid/3377455261
Printed on: June 30, 2024 at 23:06 o'clock
3 Comments
Latest comment
Hallo,
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 face-smile](/images/icons/fa/light/face-smile.svg)
Gruss,
Peter
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)
Gruss,
Peter
LiteralPath Parameter ist dein Freund
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
$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
}
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
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