kacToHbI4
@kacToHbI4
11 лет anykey - надоело, хочу в разработчики.

В PowerShell не выполняется команда -newname, если в пути пробелы, что сделать?

В случае выполнения команды
dir -Recurse "D:\VideoArchive\Instagram\*qwer*" | ren -newname {$_.name.replace("qwer", "")}

Из всех имен файлов во всех подпапках указанного пути удаляется qwer

В случае если в команде путь к файлу указан с пробелами
dir -Recurse "D:\Instagram\курс по продвижению\*qwer*" | ren -newname {$_.name.replace("qwer", "")}


Не происходит ничего, пробовал и так:
dir -Recurse "D:\Instagram\курс` по` продвижению\*qwer*" | ren -newname {$_.name.replace("qwer", "")}


И так:
dir -Recurse "& 'D:\Instagram\курс по продвижению\*qwer*'" | ren -newname {$_.name.replace("qwer", "")}

И так:
dir -Recurse "& 'D:\Instagram\курс по продвижению\*qwer*'" | Invoke-Expression | ren -newname {$_.name.replace("qwer", "")}


И ещё некоторые варианты, во многих случаях или ошибка говорящая о том, что все таки путь после пробела делится, либо ничего не происходит...

Помогите, пожалуйста, написать корректный скрипт. Спасибо!

P.S. Как обходной путь помогло в нужном каталоге правой кнопкой мыши + Shift, выбрать Open PowerShell window here и выполнить
dir -Recurse "*qwer*" | ren -newname {$_.name.replace("qwer", "")}
но хочется большей автоматизации и меньше кликов :-)
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka
Токсичный шарпист
Попробуйте
$items = Get-childItem -Path "D:\Instagram\курс по продвижению\*qwer*" -Recurse -Force 
foreach($item in $items) {
    Rename-Item -Path $item -NewName $item.Name.Replace("qwer", "")
}

Или
Get-childItem -Path "D:\Instagram\курс по продвижению\*qwer*" -Recurse -Force | % Rename-Item -NewName {$_.Name.Replace("qwer"m "")}


Rename-Item переименовывает только один файл/папку за раз, а вы ему список подсовываете.
Ответ написан
@MaxKozlov Куратор тега PowerShell
Вы чего-то не договариваете :)

потому что оно нормально всё переименовывает даже без обёрток вокруг Rename-Item,
rename свой -Path может получить через pipeline, а -newname у вас скрипт

Только что затестил.
Даже внутри переименованной в процессе папки переименовывает содержимое

Добавьте к орининальному ren -whaitif и посмотрите что выдаёт
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы