Переименование группы файлов по их дате и времени
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5  Next  :| |:
Total Commander -> Автоматизация Total Commander

#31:  Author: sa PostPosted: Thu Feb 04, 2016 12:03
    —
Eug63
Оффтопный вариант с переименованием ручками.
Выделить (лучше в отдельной папке) все файлы со сбоем в 1 час и в инструменте группового переименования (сокращённо ИГП, вызывается по Ctrl+M) Найти: пробел23 и Заменить на: пробел24, Enter, F5, затем Найти: пробел22 и Заменить на: пробел23, Enter, F5 и т.д. до Найти: пробел00, Заменить на: пробел01, Enter. После этого выделить в папке уже только те файлы, что содержат пробел24, запустить ИГП и более вдумчиво (начиная с более свежих) менять их имена, а именно: Найти: датапробел24 и Заменить на: следующая_датапробел00, Enter, F5. Проводить эксперименты только на резервной копии(!) файлов, вместо слова пробел вводить символ пробела.

#32:  Author: FlasherLocation: Москва PostPosted: Thu Feb 04, 2016 13:13
    —
Шут с этими свистоплясками. Готовое решение без утилит:
Code:
'============================================== VBS ===============================================
' Прибавить/отнять часы, минуты, секунды в датах базовых имён файлов в структуре активного каталога
' Разделителем величин в исходном формате базового имени может быть дефис, пробел или точка.
' Примеры форматов базовых имён: yyyy-MM-dd HH-mm-ss; yyyy.MM.dd HH-mm-ss; dd-MM yyyy HH mm.ss

' Условие: путь запуска - пустой

' Параметры: [-<часы>] [-<минуты>] [-<секунды>] <фильтр-список расширений> <вкл/выкл рекурсию:1/0>
' Примеры:   1 0 0 *.jpg;*.jpeg 1
'            4 -5 -3 *.mp3;*.flac;*.ogg 0
'==================================================================================================

Option Explicit : Dim H, M, S, Filt, Recur, Shell, Regex, FSO
Const Title = " Правка даты в именах файлов       "
With WScript.Arguments
  If .Count <> 5 Then MsgBox "Укажите 5 параметров!", 4144, Title : WScript.Quit
  H = .Item(0) : M = .Item(1) : S = .Item(2) : Filt = .Item(3) : Recur = .Item(4)
End With

Set Shell = CreateObject("Shell.Application")
Set Regex = New Regexp : Regex.IgnoreCase = True
Set FSO   = CreateObject("Scripting.FileSystemObject")
Regex.Pattern = "^(\d{2,4})([ -\.])(\d{2})([ -\.])(\d{2,4} +\d{2})([ -\"&_
".])(\d{2})([ -\.])(\d{2})(.(" & Replace(Mid(Filt, 3), ";*.", "|") & "))$"
FFolder CreateObject("WScript.Shell").CurrentDirectory
MsgBox "           Выполнено!", 4160, Title

Sub FFolder(Folder)
  Dim Items, F, N, Ext, D, Dy, Mh, Hr, Mn, Sc, n1, n2, Fd
  Set Folder = Shell.NameSpace(Folder)
  Set Items  = Folder.Items
  Items.Filter 8384, Filt
  If Items.Count Then
    For Each F In Items
      N = FSO.GetFileName(F.Path)
      With Regex
        If .Test(N) Then
          Ext = "" : If N = F.Name Then Ext = .Replace(N,"$10")
          D = CDate(.Replace(N, "$1$2$3$4$5:$7:$9")) + TimeSerial(H,M,S)
          Dy = Day(D) : Mh = Month(D) : Hr = Hour(D) : Mn = Minute(D)
          Sc = Second(D) : Call AddNull(Dy)(Mh)(Hr)(Mn)(Sc)
          If Len(.Replace(N,"$1")) = 4 Then n1 = 2 : n2 = 4 Else n1 = 4 : n2 = 2
          F.Name = Year(D) & .Replace(N, "$" & n1) & Mh & .Replace(N,"$" & n2)&_
          Dy & " " & Hr & .Replace(N, "$6") & Mn & .Replace(N, "$8") & Sc & Ext
        End If
      End With
    Next
  End If
  If Recur = 1 Then
    Items.Filter 8352, "*"
    For Each Fd In Items : FFolder Fd.Path : Next
  End If
End Sub

Function AddNull(DateT)
  DateT = Right("0" & DateT, 2) : Set AddNull = GetRef("AddNull")
End Function


Last edited by Flasher on Fri Feb 05, 2016 11:23; edited 1 time in total

#33:  Author: Eug63 PostPosted: Fri Feb 05, 2016 05:58
    —
sa wrote:
Судя по примерам от 2014 и 2012 годов, время было сбито не в одной фотосессии, а на протяжении несколько лет...

это просто случайные примеры, сбито было в течении 1 недели летом 2016, около 3000 снимков.

Flasher wrote:
А ничего, что приведённая мной утилита меняет все 3 типа дат? И для powershell это не проблема:
Код:
gci D:\MyFotos\ -include *.jpg -Recurse -Force|%{$_.CreationTime=$_.CreationTime.AddHours(1)}


Это то что надо)))

Большое спасибо всем за помощь)))

#34:  Author: FlasherLocation: Москва PostPosted: Fri Feb 05, 2016 06:06
    —
Eug63 wrote:
Это то что надо)))
В случае vbs-скрипта менять дату не требуется, плюс файлы с другими именами затронуты не будут. Не говоря о других плюсах (в частности указанных в шапке).

#35:  Author: Eug63 PostPosted: Fri Feb 05, 2016 06:41
    —
Flasher
Попробовал скрипт, тоже нужная вещь, иногда хронологию надо менять), но у меня не заработало, пишет "Выполнено", а файлы остаются без изменений.

Добавлено спустя 8 минут:

Win7 x64
TC (x64) 8.51a


Last edited by Eug63 on Fri Feb 05, 2016 08:53; edited 1 time in total

#36:  Author: FlasherLocation: Москва PostPosted: Fri Feb 05, 2016 07:27
    —
Eug63
Как скриптами пользоваться известно?

#37:  Author: Eug63 PostPosted: Fri Feb 05, 2016 08:35
    —
Flasher
Сделал все по памятке, кроме пункта 4


Last edited by Eug63 on Fri Feb 05, 2016 08:40; edited 1 time in total

#38:  Author: FlasherLocation: Москва PostPosted: Fri Feb 05, 2016 08:38
    —
Eug63
Условие шапки выполнено? Если да, то строку параметров можно увидеть?

#39:  Author: Eug63 PostPosted: Fri Feb 05, 2016 08:42
    —
Flasher
Скопировано из шапки:
1 0 0 *.jpg;*.jpeg 1


Last edited by Eug63 on Fri Feb 05, 2016 08:47; edited 1 time in total

#40:  Author: FlasherLocation: Москва PostPosted: Fri Feb 05, 2016 08:45
    —
Хотелось бы всё же ответ на первый вопрос получить.

P.S.: Касаемо отсутствующих точек и заглавных букв - не забывайте, что у нас форум, а не чат, пишите грамотно.

#41:  Author: Eug63 PostPosted: Fri Feb 05, 2016 08:52
    —
Flasher
Путь запуска пустой.
Имена файлов в формате, который я приводил в качестве примера.


Last edited by Eug63 on Fri Feb 05, 2016 08:55; edited 1 time in total

#42:  Author: FlasherLocation: Москва PostPosted: Fri Feb 05, 2016 08:55
    —
Eug63
Хм. Т.е. стоим мы на папке с jpg файлами, жмём кнопку, и ничего в именах не меняется?

#43:  Author: Eug63 PostPosted: Fri Feb 05, 2016 08:56
    —
Flasher
Да.

#44:  Author: FlasherLocation: Москва PostPosted: Fri Feb 05, 2016 09:02
    —
Eug63
Странно. Если между 32 и 33 строкой Msgbox True вставить выскочит "Истина"?

Flasher wrote:
стоим мы на папке
Не "на", а "в", разумеется.

#45:  Author: Eug63 PostPosted: Fri Feb 05, 2016 09:07
    —
Flasher
Да, появляется.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, 4, 5  Next  :| |:
Page 3 of 5

Powered by phpBB © 2001, 2005 phpBB Group