Изменение даты нескольких файлов с разницей в секунду
Select messages from
# through # FAQ
[/[Print]\]

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

#1: Изменение даты нескольких файлов с разницей в секунду Author: nLnoOm PostPosted: Mon Jun 22, 2020 02:03
    —
Здравствуйте все. Часто использую в Total Commander функцию "изменения атрибутов файла", меняю дату последнего изменения. Но когда выделяешь сразу несколько файлов и меняешь их дату, то она у всех становится одинаковая, а мне хотелось бы, чтобы она отличалась хотя бы на одну секунду.
То есть, к примеру, чтобы у 1.jpg была дата последнего изменения 22 ‎июня ‎2020 ‎г., ‏‎0:04:53, у 2.jpg 22 ‎июня ‎2020 ‎г., ‏‎0:04:54, у 3.jpg 22 ‎июня ‎2020 ‎г., ‏‎0:04:55, у 4.jpg 22 ‎июня ‎2020 ‎г., ‏‎0:04:56 и так далее. Как это можно сделать? Вручную не вариант.

#2:  Author: FlasherLocation: Москва PostPosted: Mon Jun 22, 2020 05:24
    —
Code:
'=============================== VBS ===============================
' Установка даты модификации файлов с пошаговым изменением интервала
'
' Параметры: %WL <интервал> [-]<число интервалов> [/d]
' Примеры:   %WL s 1 /d  |  %WL n -5
'
' /d — ввод даты/времени в диалоге, иначе будут использованы текущие
' Интервал принимает следующие значения:  s - секунда
'                                         n - минута
'                                         h - час
'                                         d - день
'                                         ww - неделя
'                                         m - месяц
'                                         q - квартал
'                                         yyyy - год
'============================================== Автор: Flasher © ===
Option Explicit : Dim A, D, Y, List, Desc, F, c, Ins
Set A = WSH.Arguments : If A.Count = 0 Then WSH.Quit
D = Now : c = 0 : If A.Named.Exists("d") Then InputB
Set List = CreateObject("Scripting.FileSystemObject").OpenTextFile(A(0),,,-1)
Set Desc = CreateObject("Shell.Application").NameSpace(0)
Do: F = List.ReadLine
  If Right(F, 1) <> "\" Then Desc.ParseName(F)._
  ModifyDate = DateAdd(A(1), c, D) : c = c + A(2)
Loop Until List.AtEndOfStream : List.Close
Set List = Nothing : Set Desc = Nothing

Sub InputB
  Dim i, n, x
  For Each i in Split("sсекунд a ы |nминут a ы |hчас  а ов|dд ень " &_
  "ня ней|wнедел я и ь|mмесяц  а ев|qквартал  а ов|y год года лет", "|")
    If Left(i, 1) = Left(A(1), 1) Then i = Mid(i, 2) : Exit For
  Next
  n = Abs(Right(A(2), 2)) : x = Right(n, 1) : If x = 0 Or (n > 10 And _
  n < 21 Or x > 4 And x < 10) Then n = 3 Else If x = 1 Then n = 1 Else n = 2
  With CreateObject("htmlfile")
    Y = 96/.Parentwindow.Screen.deviceYDpi
    Y = 15*Y*(.Parentwindow.Screen.Height-188*Y)/2
  End With
  Do: D = Trim(InputBox(vbCr & "Интервал:" & vbTab & A(2) & " " &_
    Split(i)(0) & Split(i)(n) & vbCr & vbCr & Ins & vbCr & vbCr &_
    "Введите исходную дату и время:", " Установка дат модификации файлов", D,, Y))
    If D = "" Then WSH.Quit
    If Not IsDate(D) Then Ins = Space(18) & "Ошибка ввода!" Else Exit Do
  Loop
End Sub


Last edited by Flasher on Tue Jun 23, 2020 13:21; edited 2 times in total

#3:  Author: nLnoOm PostPosted: Mon Jun 22, 2020 21:29
    —
Flasher, то что нужно, спасибо.

#4:  Author: FlasherLocation: Москва PostPosted: Tue Jun 23, 2020 01:05
    —
nLnoOm
Пож-та. Всё-таки решил добавить отображение заданного интервала в окошке, чтобы не путаться.

#5:  Author: Luserok PostPosted: Sat Jul 04, 2020 02:46
    —
Спасибо за код. Хотелось бы еще узнать, каким образом он вообще внедряется??

Last edited by Luserok on Fri Jul 31, 2020 23:50; edited 1 time in total

#6:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Jul 04, 2020 06:35
    —
Luserok
Памятка по скриптам для этого подфорума обязательна к прочтению новичками. Вот там и узнайте.

#7:  Author: griha09 PostPosted: Tue Dec 01, 2020 22:54
    —
Flasher, не подскажите какой файл требует ваш скрипт?
В папке в фотками jpg запускаю ваш скрипт с параметрами:
скрипт.vbs %WL s 1 /d
выходит запрос с вводом времени
ОК
появляется ошибка
ошибка:Файл не найден код:800A0035
ругается на строку Set List = CreateObject("Scripting.FileSystemObject").OpenTextFile(A(0),,,-1)
т.е. отсутствует какой-то текстовый файл.
Какой файл требует ваш скрипт?

с параметрами скрипт.vbs %WL n -5 та же самая ошибка

#8:  Author: ParazitLocation: Россия PostPosted: Wed Dec 02, 2020 03:56
    —
Вот такие надо параметры.
Code:
%WL s 1 /d


А не такие.

Code:
скрипт.vbs %WL s 1 /d

#9:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Dec 02, 2020 09:06
    —
griha09
Ранее вы о необходимости освоить поиск по форуму предупреждались неоднократно, результатов так и не видно. Даже текущую тему из одной страницы как следует не читаете. Скрипт требует прежде всего внимательного прочтения прикреплённой к этому подфоруму памятки и точного следования тому, что там написано ( в т.ч. в пп. 3-5 общих рекомендаций). Ссылка на ту же памятку дана и ровно перед вашим сообщением.

Замечание за нарушение правил форума.

#10:  Author: griha09 PostPosted: Wed Dec 02, 2020 12:51
    —
Извиняюсь, по привычке, тестировал без создания кнопки (из командной строки).
Чтоб избежать лишних вопросов, в описание скрипта надо добавить :
"Перед применением скрипта изменяемые файлы нужно выделить"

#11:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Dec 02, 2020 13:13
    —
griha09
Подобные добавления не нужны ни в этом, ни в иных скриптах, поскольку здравый смысл ещё никто не отменял: несколько файлов могут быть обработаны только с предварительным их выделением, а для одного файла такая задача не нужна. Про это выделение как исходное условие говорилось в запросе на скрипт, оно же подразумевается и стандартными параметрами типа %WL.



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


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

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group