Cambio de nombre de Powershell con caracteres variables y especiales

Cambio de nombre de Powershell con caracteres variables y especiales

Estoy intentando cambiar el nombre de algunos archivos. En la ruta y el nombre del archivo hay símbolos como [y ]espacios. El comando de cambio de nombre dice que no puede encontrar el archivo.

Hay un archivo principal con los símbolos y un archivo "temp". El archivo principal debe eliminarse y el nombre del archivo temporal debe ser el original.

mi código es:

$onlypath = Split-Path -Path $_.FullName
Rename-Item $onlypath + "\TEMP" $_.Name

y probar muchas otras sintaxis como

Rename-Item -Path "$onlypath\TEMP" -NewName $_.Name 
or
Rename-Item -Path $onlypath"\TEMP" -NewName $_.Name 
or
Rename-Item -Path $onlypath + "\TEMP" -NewName $_.Name 

El error siempre es que el archivo no está en este lugar. Probé el comando en un Shell y obtuve el mismo error, pero si agrego `como carácter de escape antes de los símbolos, funciona.

saludos

Respuesta1

Mirando su código, creo que no desea cambiar el nombre del archivo, peroMoverpor un nuevo camino. Rename-Item es para bueno... cambiar el nombre de un archivo donde realmente se encuentra. Luego le asignas un nuevo nombre de archivo, no es para cambiar la ruta.

Además, si el archivo tiene símbolos como [,], debe especificar -LiteralPathen lugar de-Path

Intentar

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

información relacionada