Есть ли простой способ переименовать все файлы в каталоге? Подходит ли PowerShell?
Я бы хотел уйти от этого:
c:\family_pics\
img123.jpg
img124.jpg
к этому:
c:\family_pics\
family_pics_1.jpg
family_pics_2.jpg
В идеале я хотел бы запустить сценарий в каталоге, который переименовал бы все файлы на основе имени текущего каталога с сохранением расширения и рекурсивно прошел бы по дереву каталогов.
На основании того, что все можно сделать в одной строке PowerShell (точно так же, как все можно сделать в одной строке Perl), вот код PS для одного каталога.
$i=0; get-childitem $dirname | foreach-object {
rename-item "$dirname\$_" $("{0}_{1}{2}" -f $dirname, ++$i, $_.Extension)
}
Чтобы сделать это рекурсивно, вы должны обернуть вышеуказанное в функцию, а затем вызвать ее в каждом каталоге в своем дереве. Вы также можете заменить строку формата чем-то более сложным, если вам нужно использовать регулярные выражения.
Это немного взломано, но я занимаюсь этим уже 12 лет и довольно быстро справляюсь:
dir >> dir.xls
ren.bat
Хотя это может быть не сразу очевидно, Excel очень хорошо подходит для такого рода задач, потому что вы можете использовать любую формулу, которую хотите для создания новых файлов, используя входные данные из существующих файлов (временная метка, имя файла, размер и т. д.).
Хотя вы можете делать что-то с пакетным файлом, я обнаружил, что лучше больше контроля, опций и т. Д. И визуального представления о том, что должно произойти.
Есть бесплатный инструмент под названием CKRename. Сайт оригинального автора вроде бы исчез, но приложение полнофункциональное и довольно популярное (я использую его уже 8 лет). Скачать CKRename
Вот скриншот в действии
Вы можете просто выделить все, что хотите, в проводнике, затем щелкнуть правой кнопкой мыши по первому и переименовать его, и окна затем переименуют их все для вас с тем же соглашением об именах.
ReNamer: http://www.den4b.com/
Также см: Как переименовать часть имени файла из набора файлов в Windows?
Перетащите папку с картинками в ReNamer (по умолчанию подпапки будут добавляться рекурсивно). Щелкните столбец «Имя» для сортировки по имени файла, если вы хотите сохранить последовательный порядок. Специальный метатег позволит вам использовать имя родительской папки для переименования. Используйте следующие правила переименования:
Total Commander есть некоторые классные функции переименования нескольких файлов.
Конечно, если вы в PowerShell Решение owenevans00 выглядит отлично.
Загрузите RenameFiles (бесплатное ПО). Это одна из немногих программ, которые мне очень не хватает с тех пор, как я перешел с Windows на Apple.
Похоже, он доступен здесь http://it-falke.com/software/renamefiles/us_description.php но у меня нет ПК, чтобы проверить эту ссылку. Последняя версия, которую я использовал, была 2.1.4. Это было действительно просто, но универсально.
это удаляет последние четыре символа (обычно расширение)
dir *.jpg | % { ren $_.Name $_.Name.Substring(0,$_.Name.Length-4) }
Возможно, вам придется адаптировать приведенное выше для обработки пробелов или ваших конкретных требований к переименованию.