Задать вопрос
ayran
@ayran
Ученик

Первую букву каждой строки заглавной?

Есть флешка в которой много различных файлов и директорий. Около половины из них начинается с маленькой буквы. Нужно чтоб все начинались с заглавной. На одном буржуйском ресурсе подсмотрел, казалось бы, верное решение, вот это:
gci | foreach { if ($_.Name -cne $_.Name.ToLower())
  { ren $_.FullName $_.Name.ToLower() } }

Но у меня почему-то завершается вот этой ошибкой:
Get-ChildItem f:\ | foreach { if ($_.Name -cne $_.Name.ToUpper())
>> { ren $_.FullName $_.Name.ToUpper() } }
ren : Исходный и результирующий путь должны различаться.
строка:2 знак:3
+ { ren $_.FullName $_.Name.ToUpper() } }

Подмогните пжл с решением.
P.s. Под мою задачу, естественно, ToLower() меняется на ToUpper(). Используется powershell 5.1.
  • Вопрос задан
  • 75 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Специалист по информационной безопасности
    11 месяцев
    Далее
  • Stepik
    Профессия "Инженер технической поддержки" - ваш старт в IT
    4 недели
    Далее
  • GB (GeekBrains)
    Профессия Специалист по кибербезопасности 2.0
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Файловая система какая?
Если FAT32, то нужно двойное переименование, сначала из старого имени в какое-то временное, затем из временного в новое.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
у тебя ToUpper() весь filename в КАПС переводит, а не только первую букву. это разные операции. для первой буквы:
$_.Name.Substring(0,1).ToUpper() + $_.Name.Substring(1)
. ошибка с путём на FAT32 — двойной ren через tmp нужен
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы