Переименовать и переопределить, даже если они существуют
Я пытаюсь использовать командлет 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, и он отлично работал