Переименование Powershell с использованием переменных и специальных символов

Переименование Powershell с использованием переменных и специальных символов

Я пытаюсь переименовать некоторые файлы. В пути и имени файла есть символы типа [, ]и пробелы. Команда переименования говорит, что не может найти файл.

Есть основной файл с символами и файл "temp". Основной файл следует удалить, а имя временного файла должно быть из оригинала.

Мой код:

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

и протестировать много других синтаксисов, таких как

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

каждый раз возникает ошибка, что файл находится не в этом месте. Я попробовал команду в оболочке и та же ошибка, но если я добавлю ` в качестве экранирующего символа перед символами, то это сработает.

привет

решение1

Глядя на ваш код, я думаю, вы не хотите переименовывать файл, ноДвигатьсяего на новый путь. Rename-Item для ну... переименования файла там, где он фактически находится. Затем вы даете ему новое имя файла, это не для изменения пути.

Также, если в файле есть символы типа [,], необходимо указать -LiteralPathвместо-Path

Пытаться

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

Связанный контент