Переименуйте несколько файлов в папке, добавьте префикс (Windows)
Я хотел бы пакетно переименовать файлы в папке, префикс имени папки в новые имена. т. е. файлы C:house chores
будут переименованы house chores - $old_name
.
6 ответов
Вариант 1: Использование Windows PowerShell
Откройте меню windows. Введите "PowerShell" и откройте командное окно "Windows PowerShell".
папка Goto с нужными файлами: например, cd "C:\house работа по дому" Примечание: адрес должен включать кавычки"", если есть пробелы.
вы можете использовать "dir", чтобы увидеть все файлы в папке. Используя '|' производство будет выход 'реж' для команды, которая следует.
Примечание: 'реж' является псевдоним "Get-ChildItem". См.: wiki: командлеты. Можно обеспечить дальнейшую функциональность. например, "dir-recurse" выводит все файлы, папки и подпапки.
Что делать, если я хочу только диапазон файлов?
вместо " dir |" я могу использовать:
dir | where-object -filterscript {($_.Name -ge 'DSC_20') -and ($_.Name -le 'DSC_31')} |
для пакетного переименования с именем каталога в качестве префикса:
dir | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}
Вариант 2: Использование Командной Строки
в папке нажмите shift+щелкните правой кнопкой мыши: выберите "откройте командное окно здесь"
for %a in (*.*) do ren "%a" "prefix - %a"
Если есть много файлов, было бы неплохо добавить команду "@echo off "перед этим и команду" echo on " в конце.
проблема с двумя ответами Powershell здесь заключается в том, что префикс может в конечном итоге дублироваться, так как сценарий потенциально будет работать над файлом как до, так и после его переименования, в зависимости от каталога, который используется при запуске процесса переименования. Чтобы обойти это, просто используйте :
Get-ChildItem -Exclude house chores-* | rename-item -NewName { "house chores-" + $_.Name }
это предотвратит процесс переименования любого файла более одного раза.
Бесплатное Программное Обеспечение 'Утилита Массового Переименования тоже хорошо работает (и является мощным перспективных задач). скачать и установка занимает минуту.
посмотреть скриншоты и учебник на оригинальном веб-сайте.
--
Я не могу предоставить пошаговые скриншоты, поскольку изображения должны быть выпущены под Лицензия Creative Commons, а не скриншоты программное обеспечение.
отказ от ответственности: я никоим образом не связан с указанным программным обеспечением/компанией. Мне понравился продукт для моей собственной задачи, он обслуживает OP и аналогичные требования, тем самым рекомендуя.
это сработало для меня, сначала cd в каталоге, который вы хотели бы изменить имена файлов, а затем выполните следующую команду:
Get-ChildItem | rename-item -NewName { "house chores-" + $_.Name }
на основе @ofer.sheffer ответ эта команда будет массовое переименование и добавить текущую дату к имени файла. ie " файл.txt "становится" 20180329-файлом.тхт" для всех файлов в текущей папке
for %a in (*.*) do ren "%a" "%date:~-4,4%%date:~-7,2%%date:~-10,2% - %a"
Я знаю, что это старый вопрос, но я много узнал из различных ответов, но придумал свое собственное решение как функцию. Это должно динамически добавлять родительскую папку в качестве префикса ко всем файлам, которые соответствуют определенному шаблону, но только если он еще не имеет этого префикса.
function Add-DirectoryPrefix($pattern) {
# To debug, replace the Rename-Item with Select-Object
Get-ChildItem -Path .\* -Filter $pattern -Recurse |
Where-Object {$_.Name -notlike ($_.Directory.Name + '*')} |
Rename-Item -NewName {$_.Directory.Name + '-' + $_.Name}
# Select-Object -Property Directory,Name,@{Name = 'NewName'; Expression= {$_.Directory.Name + '-' + $_.Name}}
}
https://gist.github.com/kmpm/4f94e46e569ae0a4e688581231fa9e00