Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Переименование группы файлов по их дате и времени
Goto page Previous  1, 2, 3, 4, 5  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
sa



Joined: 29 Apr 2009
Posts: 2567

Post (Separately) Posted: Thu Feb 04, 2016 12:03    Post subject: Reply with quote

Eug63
Оффтопный вариант с переименованием ручками.
Выделить (лучше в отдельной папке) все файлы со сбоем в 1 час и в инструменте группового переименования (сокращённо ИГП, вызывается по Ctrl+M) Найти: пробел23 и Заменить на: пробел24, Enter, F5, затем Найти: пробел22 и Заменить на: пробел23, Enter, F5 и т.д. до Найти: пробел00, Заменить на: пробел01, Enter. После этого выделить в папке уже только те файлы, что содержат пробел24, запустить ИГП и более вдумчиво (начиная с более свежих) менять их имена, а именно: Найти: датапробел24 и Заменить на: следующая_датапробел00, Enter, F5. Проводить эксперименты только на резервной копии(!) файлов, вместо слова пробел вводить символ пробела.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Feb 04, 2016 13:13    Post subject: Reply with quote

Шут с этими свистоплясками. Готовое решение без утилит:
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

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Fri Feb 05, 2016 11:23; edited 1 time in total
Back to top
View user's profile Send private message
Eug63



Joined: 01 Feb 2016
Posts: 13

Post (Separately) Posted: Fri Feb 05, 2016 05:58    Post subject: Reply with quote

sa wrote:
Судя по примерам от 2014 и 2012 годов, время было сбито не в одной фотосессии, а на протяжении несколько лет...

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

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


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

Большое спасибо всем за помощь)))
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Feb 05, 2016 06:06    Post subject: Reply with quote

Eug63 wrote:
Это то что надо)))
В случае vbs-скрипта менять дату не требуется, плюс файлы с другими именами затронуты не будут. Не говоря о других плюсах (в частности указанных в шапке).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Eug63



Joined: 01 Feb 2016
Posts: 13

Post (Separately) Posted: Fri Feb 05, 2016 06:41    Post subject: Reply with quote

Flasher
Попробовал скрипт, тоже нужная вещь, иногда хронологию надо менять), но у меня не заработало, пишет "Выполнено", а файлы остаются без изменений.

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

Win7 x64
TC (x64) 8.51a


Last edited by Eug63 on Fri Feb 05, 2016 08:53; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Feb 05, 2016 07:27    Post subject: Reply with quote

Eug63
Как скриптами пользоваться известно?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Eug63



Joined: 01 Feb 2016
Posts: 13

Post (Separately) Posted: Fri Feb 05, 2016 08:35    Post subject: Reply with quote

Flasher
Сделал все по памятке, кроме пункта 4


Last edited by Eug63 on Fri Feb 05, 2016 08:40; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Feb 05, 2016 08:38    Post subject: Reply with quote

Eug63
Условие шапки выполнено? Если да, то строку параметров можно увидеть?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Eug63



Joined: 01 Feb 2016
Posts: 13

Post (Separately) Posted: Fri Feb 05, 2016 08:42    Post subject: Reply with quote

Flasher
Скопировано из шапки:
1 0 0 *.jpg;*.jpeg 1


Last edited by Eug63 on Fri Feb 05, 2016 08:47; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Feb 05, 2016 08:45    Post subject: Reply with quote

Хотелось бы всё же ответ на первый вопрос получить.

P.S.: Касаемо отсутствующих точек и заглавных букв - не забывайте, что у нас форум, а не чат, пишите грамотно.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Eug63



Joined: 01 Feb 2016
Posts: 13

Post (Separately) Posted: Fri Feb 05, 2016 08:52    Post subject: Reply with quote

Flasher
Путь запуска пустой.
Имена файлов в формате, который я приводил в качестве примера.


Last edited by Eug63 on Fri Feb 05, 2016 08:55; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Feb 05, 2016 08:55    Post subject: Reply with quote

Eug63
Хм. Т.е. стоим мы на папке с jpg файлами, жмём кнопку, и ничего в именах не меняется?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Eug63



Joined: 01 Feb 2016
Posts: 13

Post (Separately) Posted: Fri Feb 05, 2016 08:56    Post subject: Reply with quote

Flasher
Да.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Feb 05, 2016 09:02    Post subject: Reply with quote

Eug63
Странно. Если между 32 и 33 строкой Msgbox True вставить выскочит "Истина"?

Flasher wrote:
стоим мы на папке
Не "на", а "в", разумеется.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Eug63



Joined: 01 Feb 2016
Posts: 13

Post (Separately) Posted: Fri Feb 05, 2016 09:07    Post subject: Reply with quote

Flasher
Да, появляется.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5  Next
Page 3 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group