|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименовать группу файлов |
|
CMD/BAT - [решено] Переименовать группу файлов
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать
Добрый день!
Мне нужна помощь в переименовании файлов в папке. Хочу упорядочить все имена фото и привести к общему знаменателю, на входе имею порядка 2 тысяч кадров 00100sPORTRAIT_00100_BURST20180828121607514_COVER.jpg 00000PORTRAIT_00000_BURST20181231130219048.jpg IMG_20181231220815541_COVER.jpg На выходе хочу получить IMG_20161205_123633.jpg (IMG_дата_время.jpg) Есть кадры, с одинаковым датой и временем, не хочется ничего потерять в процессе переименования. Подскажите, пожалуйста, код для автоматизации процесса. |
|
Отправлено: 19:47, 17-08-2023 |
fascinating rhythm Сообщения: 6567
|
Профиль | Отправить PM | Цитировать Если в фотографиях есть метаданные, лучше переименовывать их по EXIF, например, с помощью
https://www.amok.am/en/freeware/amok_exif_sorter/ |
------- Отправлено: 23:26, 17-08-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 250
|
Профиль | Отправить PM | Цитировать Цитата astiome:
|
|
Отправлено: 03:38, 18-08-2023 | #3 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Это полностью решает мой вопрос! |
|
Отправлено: 11:53, 18-08-2023 | #4 |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать vbs
BoxIn = "Z:\Box_In" 'Папка с файлами FMask = "*.jpg" RMask = "20\d{12}" Set FSO = CreateObject("Scripting.FileSystemObject") Set Reg = CreateObject("VBScript.RegExp") Reg.Pattern = RMask With CreateObject("Shell.Application") Set Fitems = .Namespace(BoxIn).Items Fitems.Filter 64 + 128, FMask For Each f In Fitems If RegMid(f.Name, Reg, Sout) Then With FSO .MoveFile f.Path, BoxIn + "\IMG_" + Mid(Sout, 1, 8) + "_" + Mid(Sout, 9, 6) + "." + .GetExtensionName(f.Name) End With End If Next End With '''''''''''''''''''''''''''''''''''''End Sub Function RegMid(S, Reg, Sout) Sout = Empty: RegMid = Reg.Test(S) If RegMid Then Sout = Reg.Execute(S).Item(0) End Function |
|
------- Отправлено: 13:20, 18-08-2023 | #5 |
Crazy Сообщения: 1177
|
Профиль | Отправить PM | Цитировать Цитата astiome:
# Создаются подкаталоги yyyy\MM, по дате съемки фото (EXIF) или по дате изменения # файла, если данные EXIF отсутствуют. # Файлы перемещаются в соответствующие датам каталоги. # Обработка файлов производится c рекурсией # При наличии дубликатов наименований файлов, производится добавление суффикса # "_copy_N", N - номер копии # Ничего не удаляется и проверки фото на идентичность, не производится add-type -ass system.drawing $tag = 0x9003 # Тег EXIF $src = ".\1" # Исходный каталог, где расположены исходные файлы, можно указать абсолютный путь $out = ".\OUT" # Целевой каталог, где формируется структура целевых файлов, лучше указать абсолютный путь $flt = "*.jpg", "*.3gp", "*.mp4", "*.mpg", "*.png" # фильтр расширений файлов dir $src -inc $flt -file -rec|%{ $dtmp=$null # Ловушка для отсутствующих тегов EXIF: trap {continue} $arr = new-object system.drawing.bitmap($_.fullname) $dtmp = [text.encoding]::ascii.getstring($arr.getpropertyitem($tag).value) if($dtmp -eq $null -or $dtmp -match "0000"){ $a = get-date($($_.lastwritetime)) -f "yyyy\\MM" } else { $date = $dtmp -replace '^(\d{4}):(\d{2}):(\d{2})','$1.$2.$3' $a = get-date($date) -f "yyyy\\MM" } $b = $out + '\' + $a if (!(test-path $b -pathtype container)){ ni $b -type directory|out-null } $dir = gi $b # Освобождаем файлы: $arr.dispose() $dtmp.dispose() # Перемещаем файлы if (test-path $($dir.fullname+'\'+$_.name) -pathtype leaf){ $cnt = 1 $file = $dir.fullname+'\'+$_.basename+'_copy_'+$cnt+$_.extension while (test-path $file -pathtype leaf){ $cnt++ $file = $dir.fullname+'\'+$_.basename+'_copy_'+$cnt+$_.extension } # write-host $file -for cyan move $_.fullname $file } else {move $_.fullname $dir.fullname} } Цитата astiome:
|
||
------- Отправлено: 13:50, 18-08-2023 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Переименовать файлы и поменять формат файлов | Вова.Неневолин@vk | Скриптовые языки администрирования Windows | 3 | 18-08-2019 18:34 | |
CMD/BAT - Найти и переименовать содержимое файлов. | Spacejet | Скриптовые языки администрирования Windows | 2 | 15-01-2015 18:22 | |
CMD/BAT - Переименовать кучу файлов | bagfinder | Скриптовые языки администрирования Windows | 1 | 03-02-2014 21:32 | |
CMD/BAT - обрабовать группу файлов в архиве | murka_anka | Скриптовые языки администрирования Windows | 3 | 12-04-2012 15:58 | |
Доступ - [решено] Переименовать рабочую группу | Dmytrov | Microsoft Windows 7 | 4 | 05-03-2011 00:36 |
|