Как отметил Мэтт в комментариях, -replace
использует регулярное выражение. В регулярном выражении символ .
является подстановочным знаком, обозначающим любой отдельный символ. Чтобы на самом деле выбрать точку, вы должны использовать \.
.
Регулярное выражение для выбора чего-либо с двумя или более точками: \.\.+
( RegExr )
Следовательно, ваша команда должна быть:
dir -Recurse | Rename-Item -NewName {$_.name -replace "\.\.+" , ""}
Однако dir
является псевдонимом для Get-ChildItem
. При написании сценариев рекомендуется избегать псевдонимов, когда это возможно, поскольку это может создать ситуацию, когда ваш сценарий не работает в определенных средах. Учитывая это, ваша команда должна быть:
Get-ChildItem -Recurse | Rename-Item -NewName {$_.name -replace "\.\.+" , ""}