Переименовать и переопределить, даже если они существуют

Я пытаюсь использовать командлет Rename-Item, чтобы сделать следующее:

У меня есть папка, содержащая файлы *. txt (скажем, 1.txt, 2.txt и т.д.) Я хочу скопировать файлы с префиксом, переименовать их в *.txt и переопределить любые существующие файлы, если они есть.

Пример:

папка c:\TEST файлы: 1.txt, 2.txt, 3.txt, 4.txt, 5.txt, index.1.txt, index.2.txt, index.3.txt, index.4.txt, index.5. TXT

Я хочу использовать rename-item для фильтрации любых index.*.txt и переименовать их в *.txt, а если тот же файл существует, замените его.

Спасибо, ребята,

Ответ 1

Как отмечено @lytledw, Move-Item -Force отлично работает для переименования и перезаписывания файлов.

Чтобы заменить часть имени index. имени, вы можете использовать оператор regex -replace:

Get-ChildItem index.*.txt |ForEach-Object {
    $NewName = $_.Name -replace "^(index\.)(.*)",'$2'
    $Destination = Join-Path -Path $_.Directory.FullName -ChildPath $NewName
    Move-Item -Path $_.FullName -Destination $Destination -Force
}

Ответ 2

Я попробовал rename-item -force, и это не сработало. Тем не менее, я смог выполнить move-item -force, и он отлично работал