Powershell-Umbenennung mit Variablen und Sonderzeichen

Powershell-Umbenennung mit Variablen und Sonderzeichen

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 -LiteralPathstattdessen 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
}

verwandte Informationen