Пакетный файл IF GEQ срабатывает несмотря на несоответствие - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь запустить и .exe в определенный промежуток времени, но, несмотря на то, что GEQ еще не соответствует (например, 20:55), он все равно переходит к метке: run.

Я такжепробовал только EQU, но здесь, несмотря на совпадение времени, он не идет: беги.Только если я запускаю пакет точно в% времени%, он работает, но, очевидно, в этом не весь смысл.

Что здесь не так?

@ECHO OFF
SET hour=%time:~0,5%
echo It is %hour%

:check
echo.
echo %time:~0,5%
echo checking
timeout /t 60
IF %hour% GEQ 21:00 IF %hour% LEQ 22:00 (goto :run) else (goto :check)

:run
echo running
start chrome.exe
pause

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Достаточно легко обрабатывать даты в PowerShell.Создайте два файла в одном каталоге.

=== runitat.ps1

$h = (Get-Date).Hour
if (($h -ge 20) -and ($h -le 21)) {
    Invoke-Command -Command {& "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"}
}

=== runitat.bat

:head
powershell -NoLogo -NoProfile -File %~dp0runitat.ps1
timeout /T 60
GOTO head
0 голосов
/ 25 апреля 2019

Может быть, вы можете попробовать что-то вроде этого:

@echo off

:get_the_time
for /f %%# in ('wMIC Path Win32_LocalTime Get /Format:value') do @for /f %%@ in ("%%#") do @set %%@

echo CURRENT TIME -- %hour%:%minute%
:: creatring a comparable number with wich time for starting chrome can be used
if %hour% LSS 10 ( set hour=10%hour% ) else ( set hour=1%hour%)
if %minute% LSS 10 (set minute=0%minute%)

set comparable_time=%hour%%minute%

::now the comparable_time is in format 1HourMinute . The 1 in the front is to avoid complications with leading zero

timeout /t 60
if %comparable_time% GEQ 12100 if %comparable_time% LEQ 12200 ( goto :run ) else ( goto :get_the_time )

:run
echo running
start chrome.exe
pause

Поскольку ваш метод получения времени не такой надежный и зависит от настроек времени в панели управления, я предпочел использовать WMIC .

Если в вещах, которые вы хотите сравнить с IF, есть нецифровые символы, будет выполнено сравнение по алфавиту, поэтому : не является частью предложений IF.

Также выполняется сравнение с переменной, выглядящей как 1 Час минута , а часы и минуты сохраняются в двухзначном формате, поэтому теперь используются только сравнения с числами без начальных нулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...