Переименование файлов по имени их папок и заданным числам

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

moonbaggi
Сообщения: 7
Зарегистрирован: Сб июн 09, 2018 09:24

Сообщение moonbaggi »

Flasher Спасибо!
Как я понимаю данной код нужно сохранить в блокнот в формате vbs.
И создать кнопку в меню инструментов?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

moonbaggi
Да. Только это панель, а не меню. См. памятку сверху подфорума.

P.S.: Ник вставляется кликом в колонке профиля слева.

P.P.S.: Судя по тому, что bootboy создал схожий запрос (всё та же "Переименовка ...") на другом форуме, со скриптом "справиться" ему, к удивлению, не удалось.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
ZorKon71
Сообщения: 36
Зарегистрирован: Вт май 11, 2010 09:25
Откуда: Обираловка, МО

Сообщение ZorKon71 »

А можно автоматизировать переименование, если в имени файлов дата?
Например есть:
2022-07-30 16-37-56.mp4
2022-07-30 20-21-53.mp4
2022-07-30 23-19-47.mp4

Нужно прибавить час, т.е. должно получиться:
2022-07-30 17-37-56.mp4
2022-07-30 21-21-53.mp4
2022-07-31 00-19-47.mp4

Как понимаете, простой подстановкой цифр - не получится...
Аватара пользователя
Monarch-LFV
Сообщения: 360
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

ZorKon71
Да, здесь порстым изменением цифр не обойдешься, здесь нужно преобразовать имя в дату, прибавить час и заново разделить на части и записать в имя. Написал скрипт VBS:

Код: Выделить всё

' Изменяет время в имени файла (прибавляет час)
' например:    2022-07-30 23-37-56.mp4   ->   2022-07-31 00-37-56.mp4
' параметры %WL

on error resume next
Set FSO = CreateObject("Scripting.FileSystemObject") 
FileList = WScript.Arguments(0)
List = Split(FSO.OpenTextFile(FileList,,,-1).ReadAll, vbNewLine)

For Each filename In List
  if filename="" then WScript.Quit ' выход на последней пустой строке
  fn = FSO.GetBaseName(filename) ' Имя файла
  ext="." & FSO.GetExtensionName(filename) ' расширение файла
  
  Dy1=mid(fn, 1, 4): Dm1=mid(fn, 6, 2): Dd1=mid(fn, 9, 2) ' вычленяем из имени дату (год, месяц, день)
  Th1=mid(fn, 12, 2): Tm1=mid(fn, 15, 2): Ts1=mid(fn, 18, 2) ' вычленяем из имени время (часы, минуты, секунды)
  dat1=Dd1 & "." & Dm1 & "." & Dy1 & " " & Th1 & ":" & Tm1 & ":" & Ts1 ' преобразование в дату/время

  dat2=dateadd("h", 1, dat1) ' Здесь прибавляем 1 час ко времени
  Dy2=Year(dat2): Dm2=right("0" & Month(dat2), 2): Dd2=right("0" & Day(dat2), 2) ' разбиваем на год, месяц, день
  Th2=right("0" & Hour(dat2), 2): Tm2=right("0" & Minute(dat2), 2): Ts2=right("0" & Second(dat2), 2) ' разбиваем на часы, минуты, секунды
  
  newfnext=Dy2 & "-" & Dm2 & "-" & Dd2 & " " & Th2 & "-" & Tm2 & "-" & Ts2 & ext ' формирование нового имени файла
  FSO.GetFile(filename).Name = newfnext ' переименование файла
next
Работает только для файлов и именно для представленной вами форме записи в примере.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Monarch-LFV
Проверил на скорую руку. Работает - даже цифру тысячелетия меняет при необходимости.
Спасибо! Возможно, пригодится когда-нибудь для похожей задачи.
ZorKon71
Сообщения: 36
Зарегистрирован: Вт май 11, 2010 09:25
Откуда: Обираловка, МО

Сообщение ZorKon71 »

Monarch-LFV писал(а):Написал скрипт VBS:
Спасибо.
Но это получается TC не причём?

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

Не пойму как использовать...
Сохранил в change-time.vbs
Запускаю - не помогает...

Видимо я не прав.
Как настроить в ТС?
Аватара пользователя
Monarch-LFV
Сообщения: 360
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

ZorKon71
Перетащите мышкой файл скрипта на панель инструментов. Создастся новая кнопка. В свойстве этой кнопки в строке параметров пропишите “%WL” (без кавычек).
Далее выделяете файлы в файловой панели и нажимаете эту кнопку. Для безопасности рекомендую сделать копию этих файлов для начала. И еще раз: Работает только для файлов и именно для представленной вами формы записи в примере.
ZorKon71
Сообщения: 36
Зарегистрирован: Вт май 11, 2010 09:25
Откуда: Обираловка, МО

Сообщение ZorKon71 »

СПАСИБО!

Всё получилось!!!
Ответить