
Я пытаюсь переименовать некоторые файлы. В пути и имени файла есть символы типа [
, ]
и пробелы. Команда переименования говорит, что не может найти файл.
Есть основной файл с символами и файл "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
}