Страница 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
Вот такие надо параметры.
А не такие.
Добавлено: Ср дек 02, 2020 08:06
Avada
griha09
Ранее вы о необходимости освоить поиск по форуму предупреждались неоднократно, результатов так и не видно. Даже текущую тему из одной страницы как следует не читаете. Скрипт требует прежде всего внимательного прочтения прикреплённой к этому подфоруму
памятки и точного следования тому, что там написано ( в т.ч. в пп. 3-5 общих рекомендаций). Ссылка на ту же памятку дана и ровно перед вашим сообщением.
Замечание за нарушение правил форума.
Добавлено: Ср дек 02, 2020 11:51
griha09
Извиняюсь, по привычке, тестировал без создания кнопки (из командной строки).
Чтоб избежать лишних вопросов, в описание скрипта надо добавить :
"Перед применением скрипта изменяемые файлы нужно выделить"
Добавлено: Ср дек 02, 2020 12:13
Avada
griha09
Подобные добавления не нужны ни в этом, ни в иных скриптах, поскольку здравый смысл ещё никто не отменял: несколько файлов могут быть обработаны только с предварительным их выделением, а для одного файла такая задача не нужна. Про это выделение как исходное условие говорилось в запросе на скрипт, оно же подразумевается и стандартными параметрами типа %WL.