|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Если файл изменен более N минут назад |
|
CMD/BAT - [решено] Если файл изменен более N минут назад
|
Новый участник Сообщения: 17 |
Всегда писал, не писал с датой и временем. Вернее не имею понятия как с ними работать.
в общем смысл такой 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 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 09:51, 25-02-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 10:16, 25-02-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить 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 $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
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
Вдобавок я не силен в скрипт хосте :\ Если бы кто-нибудь дал пример как сравнивать 2 даты до минут, в условии, я бы быстренько сообразил, как мне сделать. |
||
Отправлено: 10:42, 25-02-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата konst_vrn@vk:
![]() |
|
Отправлено: 10:57, 25-02-2014 | #6 |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
У меня задача несколько иная. Мне нужно сравнить время изменения с текущим - 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
|
Профиль | Отправить PM | Цитировать Цитата konst_vrn@vk:
|
|
Отправлено: 13:38, 25-02-2014 | #8 |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать Чего стер сообщение?))) Главное было не батник, главное спасибо за идею как привести к математическому виду))) Я именно это спрашивал, по большей части)
Написал по своему, получается, что ему по барабану время на сколько время изменения файла отстает от текущего, но будет косяк 1 раз в год четко на новый год, в этот день величина месяца , по условию выполнения задачи, станет не больше, а меньше прошлого. время N можно задать до 1339 минут. В общем пользуйтесь, если кому пригодится. Цитата:
|
|
Последний раз редактировалось konst_vrn@vk, 26-02-2014 в 00:03. Отправлено: 23:35, 25-02-2014 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как разбить *.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 |
|