1

У меня есть программное обеспечение (менеджер электронных книг), которое доставляет новости в 6 часов утра. Я хочу сделать следующее:

  1. Разбудить компьютер в 5:50, если он еще не включен (легко сделать в BIOS)
  2. Планировщик открывает калибр в 5:55 (сделано)
  3. Калибр получает новости при запуске.

Вышеперечисленные шаги было легко выполнить, но есть некоторые проблемы. Я хочу выключить компьютер, ЕСЛИ И ТОЛЬКО ЕСЛИ он был запущен в 5:50 автоматически. Если по какой-либо причине компьютер уже включен, я НЕ ХОЧУ его выключать.

Как это должно быть сделано?

4 ответа4

3

Поскольку условие состоит в том, чтобы выполнить сброс только в том случае, если компьютер был загружен автоматически в 5:50, я думаю, что одним из способов было бы полагаться на время загрузки. Вы можете настроить минутный таймер, чтобы определить, когда BIOS запускает компьютер в 5:50, какое время загрузки видит система. Но это деталь.

Для выключения и определения времени загрузки вы можете использовать следующий скрипт powershell:

# GETTING BOOT TIME
$last_boot_date_time = Get-WmiObject win32_operatingsystem | select @{LABEL='LastBootUpTime';EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}}

# SELECTING HOUR:MINUTES:SECONDS PART OF THE DATE
$last_boot_time_only = $last_boot_date_time | foreach { ([String]$_).split(" ")[1] }

# CHECKING IF BOOT TIME EQUALS 05:50
# IF SO - INITIATE SHUTDOWN
if ( $last_boot_time_only.split(":")[0] -eq "05" -and $last_boot_time_only.split(":")[1] -eq "50")
{ 
    Write-host "Shutting down in 10 seconds."; 
    shutdown -s -f -t 10
}

Это предполагает, что вы используете Windows с PowerShell версии 1 или 2. Если у вас более высокая версия powershell, вы можете заменить команду, которая получает время загрузки, на Get-CimInstance -ClassName win32_operatingsystem | select lastbootuptime

2

Вот скрипт AutoHotKey, который делает это. Убедитесь, что вы запускаете этот скрипт при загрузке. (Добавить ярлык в папку автозагрузки)

;
; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win9x/NT
; Author:         AEonAX
;
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
if (A_Hour=5 and A_Min>55 and A_Min<59) ;Check if script starting time between 05:55 and 05:59 (24Hr clock)
{
Sleep,1000*60*5     ;Waits 5 Minutes
msgbox,4,,Will Shutdown in 60 seconds. Do you want to Stop the Shutdown.,60 ;Shows a msgbox for 60 seconds, If no response then shutsdown
ifmsgbox,Yes
    MsgBox Shutdown Cancelled
else
    Shutdown,1
}
0

Попробуйте приведенный ниже пакетный скрипт, он зависит от времени работы системы. Запустите это, когда вы думаете, что это уместно, с планировщиком

@echo off
setlocal enabledelayedexpansion

for /f "tokens=2 delims=," %%a in ('systeminfo ^| findstr Boot ^| findstr System') do (
  set output=%%a
  set /a hrs=!output:~1,1!
  set mins=!output:~3,2!
 ::echo !output!
 ::echo !hrs! 
 ::echo !mins!
if !hrs! == 5 (
    if !mins! == 50 (
        shutdown -s -f -t 100
    )
) 

)

Ну, это идея, настроить как требуется

Объяснение.

  1. Извлеките время, когда компьютер был включен,

systeminfo ^ | Findstr Boot ^ | Система Findstr

На сайте systeminfo много информации, поэтому мы фильтруем только тот параметр, который нам нужен. например,

C:\Users> systeminfo | система загрузки findstr |

Время загрузки системы: 04.12.2014, 7:20:37

  1. Выберите поле времени только через запятую

for /f "tokens = 2 delims =," %% a in ('systeminfo ^ | findstr Boot ^ | findstr System') do (установить вывод = %% a

и во всей этой строке выберите только 1-й символ (1 пробел), 3-й и 4-й символ (2 пробела)

установить / час =!выход:~ 1,1! установить мин =!выход:~ 3,2!

Чтобы дать только час и минуту

  1. ЕСЛИ функция отключается, если время совпадает.

если !ч! == 5 (

  if !mins! == 50 (

      shutdown -s -f -t 100

PS: ниже приведен комментарий, чтобы увидеть, если в коде есть какая-либо ошибка,

:: эхо!выход!

:: эхо!ч!

:: эхо!мин!

-1

попробуйте nncron для Windows http://www.nncron.ru/help/help.htm английская версия

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .