Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Если файл изменен более N минут назад

Ответить
Настройки темы
CMD/BAT - [решено] Если файл изменен более N минут назад

Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: konst_vrn@vk
Дата: 25-02-2014
Всегда писал, не писал с датой и временем. Вернее не имею понятия как с ними работать.
в общем смысл такой


set a=10
::разница минут изменения файла и текущего времени

set file=aa.log
::файл

for /f "usebackq delims=" %%I in ('"%file%"') do set A=%%~tI
::тут вытягиваем время изменения t1 и как его представить не знаю

set D=%DATE: =0% %TIME: =0%
::тут как-то дату t

::и тут я не знаю как их сравнить по скольку не знаю как представить
if %t% GTR %t1% goto metka1
goto metka2

Нужно как-то сравнить текущую дату и время с датой, и временем изменения файла, и если разница больше %a% минут выполнить условие 1 или если меньше условие 2. Это не математические величины, поэтому я даже не представляю как это сделать.
Или подскажите как их можно может перемножить, поделить или сложить так, чтобы их можно было сравнивать, дальше я разберусь.

Отправлено: 00:17, 25-02-2014

 

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Цитата:
::разница минут изменения файла и текущего времени
- какой диапазон изменения величины?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 09:51, 25-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата megaloman:
- какой диапазон изменения величины? »
ну от 3 до 30 минут

Отправлено: 10:16, 25-02-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


konst_vrn@vk, на форуме были примеры для работы с датой. Вы можете сами поискать, либо подождать, пока кто-нибудь, может быть, выложит ссылку или даст готовое решение. А я порекомендую для решения этой задачи перейти на WSH:
Код: Выделить весь код
Option Explicit

Dim strSourceFile
Dim lngTimeDiff

Dim objFSO


strSourceFile = "E:\Песочница\0364\aa.log"
lngTimeDiff   = 10 ' минут

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
	If DateDiff("n", objFSO.GetFile(strSourceFile).DateLastModified, Now()) > lngTimeDiff Then
		WScript.Echo "Difference more then [" & lngTimeDiff & "] minutes."
	Else
		WScript.Echo "Difference less then [" & lngTimeDiff & "] minutes."
		' Nothing to do
	End If
Else
	WScript.Echo "Source file [" & strSourceFile & "] not found."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0
или PoSH:
Код: Выделить весь код
$sSourceFile = "E:\Песочница\0364\aa.log"
$lTimeDiff   = 10 # минут

if(Test-Path -Path $sSourceFile -PathType Leaf) {
	if((New-TimeSpan -Start $((Get-Item -Path $sSourceFile).LastWriteTime) -End $(Get-Date)).Minutes -gt $lTimeDiff) {
		Write-Host "Difference more then [$lTimeDiff] minutes."
	} else {
		Write-Host "Difference less then [$lTimeDiff] minutes."
		# Nothing to do
	}
} else {
	Write-Host "Source file [$sSourceFile] not found." -ForegroundColor Red
}
вместо пакетных файлов.

Отправлено: 10:18, 25-02-2014 | #4


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
А я порекомендую для решения этой задачи перейти на WSH: »
к сожалению это условие будет лишь 5% всего батника.
Вдобавок я не силен в скрипт хосте :\

Если бы кто-нибудь дал пример как сравнивать 2 даты до минут, в условии, я бы быстренько сообразил, как мне сделать.

Отправлено: 10:42, 25-02-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата konst_vrn@vk:
Если бы кто-нибудь дал пример как сравнивать 2 даты до минут, в условии, я бы быстренько сообразил, как мне сделать. »
konst_vrn@vk, это пока Вы не увидели исходного кода пакетного файла для сравнения дат .

Отправлено: 10:57, 25-02-2014 | #6


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
это пока Вы не увидели исходного кода пакетного файла для сравнения дат . »
Нет, как раз я видел такие файлы. Но это все не то. Все ищут если дата мешьше\больше такой-то или меньше\больше текущей. Это я все понял как работает. Приводят к виду yyyymmddhhmm и сравнивают 2 числа сответственно более ранняя дата число меньше. Так и я догадался.

У меня задача несколько иная. Мне нужно сравнить время изменения с текущим - N минут. Вроде все просто, выведи 2 числа, представь в вид, отними от второго N и сравни. Да это будет работать, но ровно до тех пор, пока время изменения не станет допустим 11:58, а текущее будет 12:00. Отнимая N-допустим равное 10 в 11:59 мы получим 1158>1159-10, а в 12:00 результат будет 1158<1200-10. Тут сразу появится косяк в том, что в часах 60 минут, а в математике 100 чисел.
Я поэтому тут и спросил.

Отправлено: 12:02, 25-02-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата konst_vrn@vk:
Нет, как раз я видел такие файлы. Но это все не то. Все ищут если дата мешьше\больше такой-то или меньше\больше текущей. Это я все понял как работает. Приводят к виду yyyymmddhhmm и сравнивают 2 числа сответственно более ранняя дата число меньше. Так и я догадался. »
Значит, ещё не видели.

Отправлено: 13:38, 25-02-2014 | #8


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Чего стер сообщение?))) Главное было не батник, главное спасибо за идею как привести к математическому виду))) Я именно это спрашивал, по большей части)

Написал по своему, получается, что ему по барабану время на сколько время изменения файла отстает от текущего, но будет косяк 1 раз в год четко на новый год, в этот день величина месяца , по условию выполнения задачи, станет не больше, а меньше прошлого.
время N можно задать до 1339 минут.

В общем пользуйтесь, если кому пригодится.
Цитата:
::время разницы лога с текущим
Set N=5

::путь\имя.файла
set file=aa.log


set /a const=%N%*60

::достаем дату изменения
@echo off
for /f "usebackq delims=" %%I in ('"%file%"') do set A=%%~tI

echo %a%
set mon=%a:~3,2%
::месяц
set D=%a:~0,2%
::день
set h=%a:~11,2%
::часы
set m=%a:~14,2%
::минуты

::переводим время изменения (часы минуты) в секунды
set /a Hs=H*3600
set /a Ms=M*60
::время изменения в секундах
set /a Ts=Hs+Ms


::достаем текущую дату
@echo off
set now=%DATE: =0% %TIME: =0%
echo %now%
set mon1=%now:~3,2%
::месяц
set D1=%now:~0,2%
::день
set H1=%now:~11,2%
::часы
set M1=%now:~14,2%
::минуты

::переводим текущее время (часы минуты) в секунды
set /a Hs1=H1*3600
set /a Ms1=M1*60

::текущее время в секундах
set /a Ts1=Hs1+Ms1

::если новый месяц для времени изменения
If %mon1% GTR %mon% (set /a Mons=D*86400) else set Mons=0

::переменная времени изменения для сравнения
set /a TimeI=Ts+mons


::если новый месяц
set /a y=d+d1
If %mon1% GTR %mon% (set /a Mons1=y*86400) else set Mons1=0

::если новый день
If %D1% GTR %D% (set Ds1=86400) else set Ds1=0

::переменная текущего времени для сравнения
set /a TimeT=Ts1+Ds1+Mons1-const-TimeI
set /a mm=TimeT/60
set /a n2=mm+n
set /a n1=timet+n*60
echo ________________________________________________________________________________
echo B rpaHuLLax 1 DH9 pa3HuLLa cocTaBuJIa %n1% CEK uJIu %n2% MuHyT
echo %mm%
if %n2% GEQ %N% (echo pa3HuLLa 6oJIbwe %n% MuHyT) else echo pa3HuLLa meHbwe %n% MuHyT


pause

Последний раз редактировалось konst_vrn@vk, 26-02-2014 в 00:03.


Отправлено: 23:35, 25-02-2014 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Если файл изменен более N минут назад

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как разбить *.avi файл на 2 и более частей azbest Видео и аудио: обработка и кодирование 10 20-10-2009 15:58
Разное - Нужен ли в Windows Vista файл подкачки при 3 и более Гб ОЗУ? death_ Microsoft Windows Vista 40 24-06-2008 20:04
Если купить Windows Vista, можно работать на более раних версиях Ruvim Лицензирование продуктов Microsoft 1 29-06-2007 08:03
Долго грузится сайт (главная страница загружается более 3 минут) Czeetax Вебмастеру 15 15-10-2006 19:20
Как удалить лишний Windows? Если их 2 и более на одном логическом диске. Hramov_Denis Microsoft Windows 2000/XP 1 03-03-2006 04:50




 
Переход