Как переименовать несколько файлов с одинаковым именем и разными расширениями?

Вопрос или проблема

Screenshot

У меня есть несколько файлов с одинаковыми именами и разными расширениями в одной папке. Изначально эти файлы были в формате .jpg с разными именами.

Например:
1.j87
1.j88
1.j89

Теперь мне нужно переименовать каждое изображение вочное имя и расширение индивидуально.

Я нашел это, но я не знаю, как использовать этот скрипт. Может кто-нибудь помочь?

В ответ на комментарий Арджуна 10/19 около 2100 UTC, вы должны выполнить этот скрипт в пакетном файле в той же поддиректории, где находятся ваши файлы, он переименует файлы в случайные строки номеров.01.jpg и последующие номера, пока все файлы в каталоге не будут обработаны. ВСЕ файлы в этих каталогах, будь то JPG или нет, будут переименованы в случайное имя, последовательный номер и расширение .jpg.

Любые подкаталоги потребуют выполнения скрипта внутри этих директорий.

setlocal enabledelayedexpansion
set /a count=0
for /f "tokens=*" %%a in ('dir /b /od *.*') do (
    ren %%a %random%!count!.jpg
    set /a count+=1
)

Скрипт, который вы нашли, безусловно переименовывает все элементы в файл{номер последовательности, начиная с 1}.jpg из вашего текущего каталога. Имейте в виду, что команды Rename или Move могут быть очень деструктивными, особенно когда вы точно не знаете, что делает код.

Я изменяю код, чтобы он был более безопасным для вас, следующим образом:

Get-Item "2017-0~1.*" | ForEach-Object {

   $newName = $_.basename + $_.Extension.replace(".", "_") + ".jpg"
   Write-Host "rename-item" $_ $newName
   # rename-item $_ $newName
}

Код получает элементы с названием “2017-0~.*” в текущем каталоге. Для каждого элемента он переименовывает элемент, добавляя расширение “.jpg” в конец, при этом изначальное расширение точка и расширение изменяется на подчеркивание и расширение, например, “.001” на “_001”. В этом случае вы можете узнать, каким было оригинальное имя файла.

Обратите внимание, что реальное действие закомментировано.

Чтобы выполнить код:

> cd c:\to\your\directory

C:\to\your\directory> powershell

PS C:\to\your\directory> 

Вставьте код

PS C:\to\your\directory> Get-Item "2017-0~1.*" | ForEach-Object {
>>
>>    $newName = $_.basename + $_.Extension.replace(".", "_") + ".jpg"
>>    Write-Host "rename-item" $_ $newName
>>    # rename-item $_ $newName
>> }
>>

PS C:\to\your\directory> exit

C:\to\your\directory>

Если вы не уверены в использовании скриптов, вы можете переименовать файлы, используя отличную (и бесплатную) программу IrfanView, просто выполните следующие шаги:

  • Перейдите в Файл > Пакетная конвертация/Переименование....

  • В Работать как выберите Пакетное переименование.

  • В Настройки пакетного переименования измените шаблон по умолчанию image### на image###.jpg, так как вы хотите изменить и расширение. Это назовет файлы “image001.jpg”, “image002.jpg” и т. д. (если у вас более 999 изображений в этой папке, используйте вместо image####.jpg). Вы можете настроить другой шаблон имени, используя кнопку Опции.

  • В панели проводника справа выберите Все файлы (*.*) в Тип и перейдите в папку, в которой у вас находятся файлы, затем выберите те, которые хотите переименовать, и нажмите Добавить (или нажмите Добавить все, если хотите переименовать все файлы той папки).

  • В Каталог для результирующих файлов нажмите Использовать текущую папку ("искать в"), чтобы выбрать ту же папку, в которой находятся файлы, или используйте Обзор, чтобы выбрать другой каталог, если хотите перенести переименованные файлы в другую папку.

  • Наконец, нажмите Начать пакетную обработку для начала пакетного переименования.

Обратите внимание, что в качестве меры предосторожности по умолчанию IrfanView создает копию файлов с новыми именами в выходном каталоге вместо простого переименования существующих. Чтобы переименовать оригинальные файлы, перейдите в Опции настроек Пакетного переименования и измените Копировать оригинальные/входные файлы в выходной каталог на Переместить оригинальные/входные файлы в выходной каталог.

Я знаю, как это сделать с помощью оболочки CMD Windows, после того как вы перейдете в каталог с вашими JPG файлами.

Сохраните этот скрипт в BAT файл, например, renamer.bat или любую другую не зарезервированную команду и выполните его из командной строки.

setlocal enabledelayedexpansion

set /a count=0
for /f "tokens=*" %%a in ('dir /b /od *.jpg') do (

    ren %%a ПроизвольнаяСтрока!count!.jpg
    set /a count+=1

)

Судя по вашему вопросу, похоже, вы также хотите переименовать каждый файл *.jpg в что-то отличное от *.jpg, что повредит ваши ассоциации файлов и усложнит открытие изображений. Если это действительно так, замените строку Rename на:

ren %%a ПроизвольнаяСтрока!count!.!count!jpg

Ответ или решение

Теория

Когда перед нами стоит задача переименования множества файлов с одинаковыми именами, но разными расширениями, необходимо учитывать несколько технических аспектов. В первую очередь, это удобство и безопасность операции. Любое массовое изменение файлов может привести к потере данных, если операция будет выполнена некорректно. Следовательно, крайне важно выбрать подходящее программное обеспечение или скрипт, который сможет выполнить задачу безошибочно.

Основная цель заключается в изменении имен файлов таким образом, чтобы сохранить информацию о первоначальном расширении, добавить новое расширение, например, .jpg, и избежать перезаписи данных. Возможные решения включают использование скриптов на PowerShell или командные файлы Windows, а также специализированные программы, такие как IrfanView, которые предоставляют пользовательский интерфейс для выполнения подобных задач без глубоких знаний в программировании.

Пример

Рассмотрим два подхода: использование скрипта на PowerShell и программы IrfanView.

1. PowerShell

Скрипт на PowerShell, представленный ниже, позволяет безопасно переименовать файлы, изменяя лишь их расширения. Предварительно он выводит на экран предполагаемую команду переименования, чтобы пользователь мог удостовериться в корректности операции.

Get-Item "*.*" | ForEach-Object {
    $newName = $_.BaseName + $_.Extension.Replace(".", "_") + ".jpg"
    Write-Host "rename-item" $_ $newName
    # rename-item $_ $newName
}

Здесь Get-Item получает все файлы в текущем каталоге. Скрипт изменяет точку перед расширением на нижнее подчеркивание и добавляет новое расширение .jpg.

2. IrfanView

IrfanView предлагает графический интерфейс для тех, кто предпочитает избежать работы с командной строкой. Следуйте шагам:

  1. Откройте IrfanView и перейдите в меню File > Batch Conversion/Rename....
  2. Выберите Batch rename в разделе Work as.
  3. Установите шаблон имени, например, image###.jpg.
  4. Выберите файлы для переименования, используя панель исследования справа.
  5. Укажите выходную директорию, а затем начните процесс, нажав Start batch.

Применение

Рассмотрим применение данных решений в реальной жизни. Допустим, ваша компания регулярно изменяет названия файлов изображений для внутренней системы документооборота. Скрипт на PowerShell может быть автоматически запущен через планировщик задач Windows, обеспечивая регулярную обработку новых поступлений файлов.

С другой стороны, IrfanView может быть полезен для персонала, которому требуется визуальный интерфейс. Например, если сотрудник регулярно готовит отчеты с вложенными изображениями, он может использовать IrfanView для быстрой подготовки и переименования графических материалов.

Подводя итог, оба подхода предоставляют гибкость и удобство в зависимости от уровня подготовки пользователя и его рабочего процесса. Следует всегда помнить об осуществлении резервного копирования и тестирования процессов на небольшом наборе данных перед массовым применением, чтобы избежать возможных потерь информации.

Оцените материал
Добавить комментарий

Капча загружается...