Как узнать, первая ли это загрузка в текущий день?


1

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

Как я могу узнать, является ли это первая загрузка в текущий день через Windows cmd? Может быть, есть какой-то способ чтения журнала событий Windows текущего дня и подсчета событий загрузки?


Почему бы не использовать lockфайл? В пакетном файле посмотрите, существует ли файл с текущей датой. Если нет, создайте файл (это первая загрузка). если да, то это не первая загрузка. Вы можете даже привести в порядок и удалить старые файлы из предыдущих дней.
— DavidPostill

Я тоже думал об этом, но, может быть, есть другой способ, не создавая файлы
— das Keks,

Мое инстинктивное чувство говорит, что это проще, чем парсинг журналов событий (что, безусловно, возможно). Например, если вы посмотрите журналы событий, вы должны позаботиться о крайних случаях (например, система запускает таймер пробуждения для загрузки обновлений, например).
— DavidPostill

Это может помочь.

Ответы:


1

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

wevtutilиспользуется для поиска в Systemжурнале событий последних двух событий запуска ( EventID=12), и из них извлекается дата. Если обе даты совпадают, то это не первый запуск сегодня.

@echo off
    setlocal enableextensions disabledelayedexpansion
    set "boot1="
    set "boot2="

    for /f "tokens=2 delims=T: " %%a in ('
        wevtutil qe system /count:2 /rd:true /q:"Event[System[(EventID=12)]]" /format:text 
        ^| find "Date:"
    ') do if not defined boot1 ( set "boot1=%%a" ) else ( set "boot2=%%a" )

    if "%boot1%"=="%boot2%" (
        echo This is NOT the first boot on the current day
    ) else (
        echo This IS the first boot on the current day
    )

Извините, что не отреагировал на вас, ответьте тогда. Мне очень нравится ваше решение. Я думаю, что для Windows 10 необходимы некоторые модификации, поскольку Win10 использует гибридную загрузку и просто выходит из спящего режима (событие с идентификатором 107), но в целом это то, что мне было нужно.
— дас Кекс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.