#windows #powershell #replace #directory
#Windows #powershell #заменить #каталог
Вопрос:
Я хочу заменить определенный символ из моих файлов, например
я хочу изменить> «оригинал» -> «что-то еще»
я использую этот скрипт для замены его в одной папке только с помощью powershell
Dir |>> Rename-Item -NewName { $_.Name -replace "original","something " }
проблема в том, что с этим кодом это заменяет только файлы внутри одной папки и не заменяет их во вложенных папках
мне нужно, чтобы это заменило его в файле в папке и в файлах вложенной папки тоже, возможно ли это?
( я вроде как новичок в этом)
примечание: этот код показывает эту ошибку, когда есть какие-либо вложенные папки с файлами
ошибка =
Rename-Item : Source and destination path must be different.
At line:2 char:1
Rename-Item -NewName { $_.Name -replace "original","something " }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : WriteError: (F:folder-name...ffpy-compat:String) [Rename-Item], IOException
FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
Операционная система: Windows
Информация
Модель операционной системы: Windows 10
Комментарии:
1. 2-я строка абзаца: быстрое исправление > я хочу изменить> «оригинал» -> «что-то»
2.
Get-ChildItem -Path 'TheRootFolder' -File -Recurse | Rename-Item -NewName ($_.Name -replace 'original', 'something')
Ответ №1:
В случае каталогов rename-item
командлет получает тот же путь, что и входные данные, и значение -newname
параметра, поэтому выдает ошибку. Добавление параметров -verbose
и -whatif
switch в команду покажет это.
Используйте -Path
параметр, чтобы указать базовый путь, который вы хотите повторить, -recurse
параметр switch для рекурсивного посещения каждой подпапки, -file
параметр switch для фильтрации каталогов и / или используйте -filter
параметр для включения подмножества файлов.
Пример:
get-childitem -Recurse -File -Path 'c:temp' | rename-item -newname { $_.name -replace "original","replacement }