
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 -LiteralPath
en 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
}