
Ich versuche, einige Dateien umzubenennen. Im Pfad und im Dateinamen sind Symbole wie [
, ]
und Leerzeichen enthalten. Der Umbenennungsbefehl meldet, dass die Datei nicht gefunden werden kann.
Es gibt eine Hauptdatei mit den Symbolen und eine „temp“-Datei. Die Hauptdatei sollte gelöscht werden und der Name der temporären Datei sollte dem des Originals entsprechen.
mein Code ist:
$onlypath = Split-Path -Path $_.FullName
Rename-Item $onlypath + "\TEMP" $_.Name
und testete viele andere Syntax wie
Rename-Item -Path "$onlypath\TEMP" -NewName $_.Name
or
Rename-Item -Path $onlypath"\TEMP" -NewName $_.Name
or
Rename-Item -Path $onlypath + "\TEMP" -NewName $_.Name
der Fehler besteht jedes Mal darin, dass sich die Datei nicht an dieser Stelle befindet. Ich habe den Befehl in einer Shell ausprobiert und derselbe Fehler, aber wenn ich vor den Symbolen ` als Escape-Zeichen einfüge, funktioniert es.
Grüße
Antwort1
Wenn ich mir Ihren Code ansehe, denke ich, dass Sie die Datei nicht umbenennen möchten, aberBewegenes in einen neuen Pfad. Rename-Item dient dazu, eine Datei dort umzubenennen, wo sie sich tatsächlich befindet. Sie geben ihr dann einen neuen Dateinamen, es dient nicht dazu, den Pfad zu ändern.
Wenn die Datei Symbole wie enthält [,]
, müssen Sie -LiteralPath
stattdessen angeben:-Path
Versuchen
$sourcePath = 'X:\Somewhere\Here[123]'
$destination = Join-Path -Path $sourcePath -ChildPath 'Temp'
# make sure the destination folder exists
$null = New-Item -Path $destination -ItemType Directory -Force
# get the files and move them to the destination
Get-ChildItem -LiteralPath $sourcePath -File | ForEach-Object {
Move-Item -LiteralPath $_.FullName -Destination $destination
}