#windows #powershell
#Windows #powershell
Вопрос:
🙂
Допустим, в пути к файлу, C:UsersCurrentUserDocumentsRecords , есть несколько папок.
Я хочу переименовать все файлы во всех папках, добавив их соответствующие имена папок перед их текущими именами файлов.
Например, папка 1 и папка 2 существуют в C:UsersCurrentUserDocumentsRecords . Все файлы в папке 1 должны быть переименованы с добавлением «папка 1» впереди. И все файлы в папке 2 должны быть переименованы с добавлением «папка 2» впереди. Итак, что-то вроде файла «Счет-фактура» в папке 1 переименовывается в «Счет-фактура папки 1». То же самое с папкой 2.
Есть ли способ сделать это в Powershell? Любая помощь очень ценится! 🙂
Ответ №1:
Я думаю, это должно сработать:
(Get-ChildItem -Path 'C:UsersCurrentUserDocumentsRecords' -File -Recurse) |
Rename-Item -NewName {'{0} {1}' -f $_.Directory.Name, $_.Name} -WhatIf
-WhatIf
Переключение является мерой предосторожности. С добавлением этого код будет показывать только в консоли, что произойдет. Если вас это устраивает, снимите -Whatif
переключатель, чтобы фактически начать переименование файлов.
Комментарии:
1. Привет! Я попробовал, но, похоже, он ничего не делает даже с WhatIf. Обратите внимание, что это папка со многими папками с файлами, которые нуждаются в переименовании 🙂
2.@ZhenYang Я не вижу, что вы делаете, и есть ли у вас разрешение на все файлы в корневой папке, но для меня это работает так, как ожидалось. (Версия PowerShell 5.1). Как я пытался объяснить, with
-WhatIf
ничего не переименовывается; это только покажет вам. Без-WhatIf
переименования файлов. Какую версию PowerShell вы используете?-File
Переключатель доступен только с версии 3.0