Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Сравнение даты файлов
SeregaB
сообщение 10.2.2021, 17:36
Сообщение #1


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Подскажите пожалуйста, как сравнить даты последнего изменения у двух файлов, определить какой из них новый и совершить дальше действие.
Код пишу в Lua
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 10.2.2021, 18:13
Сообщение #2


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2382
Пользователь №: 18.746



--lua
log "clear";log "mode compact";require "luaposh"
PScode('return',{[[#}
#
$file1 = "D:\asd.txt"
$file2 = "D:\qwe.txt"

$files = Get-Item -LiteralPath $file1, $file2
$newestFile = $files|sort {$_.LastWriteTime}|select -Last 1
log $newestFile
#
]]})

А что дальше с файлом сделать хотите?

Сообщение отредактировал Fors1k - 10.2.2021, 18:14


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 11.2.2021, 0:18
Сообщение #3


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Цитата(Fors1k @ 10.2.2021, 18:13) *

А что дальше с файлом сделать хотите?

Спасибо!
Хочу сделать автоматическую проверку последней даты изменения файла (один на компе, второй в облаке), если файл на компе обновился, то файл в облаке тоже обновляется. Просто есть одна специальная прога, которая делает бэкапы с разными настройками, вот только она не работает с Майловским облаком и приходится вручную данные обновлять.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 11.2.2021, 0:24
Сообщение #4


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2382
Пользователь №: 18.746



SeregaB, не за что. Обращайтесь, если нужно будет что еще дописать.

Сообщение отредактировал Fors1k - 11.2.2021, 0:25


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.2.2021, 1:14
Сообщение #5


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 11.279



Код
--lua
local path
local fs
do
    -- У меня пути не стандартные, чтобы избежать свинарника.
    -- Поэтому тут есть пара "лишних" строк.
    -- Сохраняем _текущие_ пути по которым ищутся модули.
    local back = package.path
    -- Дописываю путь по которому у меня лежат модули.
    package.path = [[luaPlugins\?\?.lua;]]..package.path
    -- Подгружаем собственно модуль.
    path = require[[path]]
    -- Дописываю путь по которому у меня лежат модули.
    package.path = [[luaPlugins\\fs\?.lua;]]..package.path
    fs = require[[luaPlugins\fs\fs]]
    -- Возвращаем пути поиска модулей на исходные.
    package.path = back
end


local my_file = fs.open([[d:\1.txt]])
local btime_1 = my_file:attr().btime
my_file:close()

local my_file = fs.open([[d:\2.txt]])
local btime_2 = my_file:attr().btime
my_file:close()

if btime_1 > btime_2 then
    log([[Первый свежее.]])
elseif btime_1 < btime_2 then
    log([[Второй свежее.]])
else
    log([[Дата одинаковая.]])
end


Сообщение отредактировал DarkMaster - 11.2.2021, 1:15


Прикрепленные файлы
Прикрепленный файл  luaPlugins.zip ( 52,54 килобайт ) Кол-во скачиваний: 123


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 11.2.2021, 12:43
Сообщение #6


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Цитата(DarkMaster @ 11.2.2021, 1:14) *


Спасибо! этот вариант работает с подгрузкой библиотек, только видимо сравнение происходит по дате без учета времени. Все же требуется, чтобы время текущего дня тоже учитывалось, т.к. файл меняется по нескольку раз в течении дня.
Я начинал писать по такой схеме
Код
--lua
log("Старт")
local o_file = [[D:\1.txt]] -- файл в облаке
local w_file = [[D:\2.txt]] -- файл на ПК

o_data = filegetdate (o_file)
w_data = filegetdate (w_file)

log(o_data .. " Дата файла в облаке")
log(w_data .. " Дата файла на ПК")

--[[
код определения, какой файл свежее с учетом минут
--]]

--[[
if o_data > w_data then
    log([[файл 1 в облаке свежее.]])
    elseif o_data < w_data then  -- <----  пилот почему-то ругается на эту закоментированную строчку
        log([[файл 2 на ПК свежее.]])
        else
        log([[Дата одинаковая.]])
end
--]]

Если сделать так:
Код
-- [[
--if o_data > w_data then
--    log([[файл 1 в облаке свежее.]])
--    elseif o_data < w_data then
--        log([[файл 2 на ПК свежее.]])
--        else
--        log([[Дата одинаковая.]])
--end
--]]

то ошибка прорпадает на строке
elseif

Подскажите пожалуйста, что нужно дописать в мой код, если делать без дополнительных библиотек и чтобы учитывалось поминутное время последнего изменения файла?
Как можно дату файла преобразовать в числовое значение, чтобы с ним можно было работать?
И как правильно делать Многострочный комментарий в Пилоте, чтобы не выдавало ошибку?
Код
 --[[
код или комментарий
]]

Такой вариант не всегда работает

Цитата(Fors1k @ 10.2.2021, 18:13) *

А что дальше с файлом сделать хотите?

С luaposh_v4.1 и v5 что то совсем не получается, ни установить ни обновить иногда даже Пилот вылетает с ошибкой и закрывается. Лог совсем не пишет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 11.2.2021, 12:46
Сообщение #7


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2382
Пользователь №: 18.746



Цитата(SeregaB @ 11.2.2021, 12:43) *

И как правильно делать Многострочный комментарий в Пилоте, чтобы не выдавало ошибку?

Код
--[=[
код или комментарий
]=]


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 11.2.2021, 12:49
Сообщение #8


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Цитата(SeregaB @ 11.2.2021, 12:43) *


После сравнения файлов, сделаю чтоб старый файл заменялся новым.
Сейчас я уперся в сравнения дат, не пойму как с ними работать и где информацию с примерами найти.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 11.2.2021, 13:41
Сообщение #9


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Прикрепленный файл  CompareFileTime.zip ( 3,15 килобайт ) Кол-во скачиваний: 188

Файлы из архива закинуть в папку с пилотом.
Код
--lua
local Compare = require'CompareFileTime'

log 'clear' log 'mode compact'

local my_file1 = ([[C:\1.txt]])
local my_file2 = ([[C:\5.txt]])
local result = Compare.CompareFileTime (my_file1, my_file2)
if result then
    if result == 1 then
        log('Время первого файла позже, чем время второго файла')
    elseif result == -1 then
        log('Время первого файла раньше, чем время второго файла')
    else
        log('Время первого файла равно времени второго файла')
    end
else
    log('Один из файлов недоступен')
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 11.2.2021, 13:55
Сообщение #10


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Цитата(cirus @ 11.2.2021, 13:41) *

Прикрепленный файл  CompareFileTime.zip ( 3,15 килобайт ) Кол-во скачиваний: 188

Файлы из архива закинуть в папку с пилотом.

Отлично спасибо, то что нужно!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.2.2021, 15:41
Сообщение #11


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 11.279



Цитата
Спасибо! этот вариант работает с подгрузкой библиотек, только видимо сравнение происходит по дате без учета времени.

Там таймштамы в чистом виде. Вы не сказали по какой именно дате =) Это дата создания, я так подозреваю, что вам нужна была дата изменения.
Для фикса достаточно изменить btime на ctime. И все будет, как вам нужно. Возмоности либы тут: https://luapower.com/fs
Луа в чистом виде не умеет дергать атрибуты файлов. Если хочется совсем без либ, то можно из луа запустить dir виндовый и посмотреть его результат, но при этом мигнет окно консольки, еще ехе dir'а запустится.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.2.2021, 16:18
Сообщение #12


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 11.279



Не поленился, проверил все минуточки и секундочки на месте.
local d = os.date("%c", btime_1)
log(d)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 25.4.2024, 7:46
Designed by Nickostyle