Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименовать группу файлов

Ответить
Настройки темы
CMD/BAT - [решено] Переименовать группу файлов

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: astiome
Дата: 17-08-2023
Добрый день!
Мне нужна помощь в переименовании файлов в папке.
Хочу упорядочить все имена фото и привести к общему знаменателю, на входе имею порядка 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

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Если в фотографиях есть метаданные, лучше переименовывать их по EXIF, например, с помощью
https://www.amok.am/en/freeware/amok_exif_sorter/

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:26, 17-08-2023 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 246
Благодарности: 49

Профиль | Отправить PM | Цитировать


Цитата astiome:
Подскажите, пожалуйста, код для автоматизации проце »
есть разница между "помогите доработать" и "сделайте за меня"

Отправлено: 03:38, 18-08-2023 | #3


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
лучше переименовывать их по EXIF »
Спасибо огромное!
Это полностью решает мой вопрос!

Отправлено: 11:53, 18-08-2023 | #4


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить 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


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата astiome:
Хочу упорядочить все имена фото и привести к общему знаменателю, на входе имею порядка 2 тысяч кадров »
Мне хватало распределения файлов по каталогам:
Код: Выделить весь код
# Создаются подкаталоги 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:
Это полностью решает мой вопрос! »
Не на всех "картинках" могут присутствовать данные EXIF, в скрипте powershell это учтено...

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:50, 18-08-2023 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименовать группу файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход