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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3377455261
Url: https://administrator.de/contentid/3377455261
Ausgedruckt am: 28.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
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)
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