Страница 1 из 1

Изменение даты нескольких файлов с разницей в секунду

Добавлено: Пн июн 22, 2020 01:03
nLnoOm
Здравствуйте все. Часто использую в 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 и так далее. Как это можно сделать? Вручную не вариант.

Добавлено: Пн июн 22, 2020 04:24
Flasher

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

'=============================== 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

Добавлено: Пн июн 22, 2020 20:29
nLnoOm
Flasher, то что нужно, спасибо.

Добавлено: Вт июн 23, 2020 00:05
Flasher
nLnoOm
Пож-та. Всё-таки решил добавить отображение заданного интервала в окошке, чтобы не путаться.

Добавлено: Сб июл 04, 2020 01:46
Luserok
Спасибо за код. Хотелось бы еще узнать, каким образом он вообще внедряется??

Добавлено: Сб июл 04, 2020 05:35
Avada
Luserok
Памятка по скриптам для этого подфорума обязательна к прочтению новичками. Вот там и узнайте.

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

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

Добавлено: Ср дек 02, 2020 02:56
Parazit
Вот такие надо параметры.

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

%WL s 1 /d 
А не такие.

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

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

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

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

Добавлено: Ср дек 02, 2020 11:51
griha09
Извиняюсь, по привычке, тестировал без создания кнопки (из командной строки).
Чтоб избежать лишних вопросов, в описание скрипта надо добавить :
"Перед применением скрипта изменяемые файлы нужно выделить"

Добавлено: Ср дек 02, 2020 12:13
Avada
griha09
Подобные добавления не нужны ни в этом, ни в иных скриптах, поскольку здравый смысл ещё никто не отменял: несколько файлов могут быть обработаны только с предварительным их выделением, а для одного файла такая задача не нужна. Про это выделение как исходное условие говорилось в запросе на скрипт, оно же подразумевается и стандартными параметрами типа %WL.