将小时和分钟与批处理文件中的当前时间进行比较

时间:2014-05-12 15:29:52

标签: batch-file comparison

我目前正在处理一个批处理文件,该文件将当前时间与启动程序之前的指定时间进行比较。 即:批处理文件检查它是否已经过了上午10点。如果它是启动程序。如果没有,它会发送一条消息,告诉程序在上午10点之前无法打开。如果已经过了下午6点,程序将无法启动并显示一条消息。

这是我的代码,现在:

@echo off
Set _hourAM=
Set _minAM=
Set _hourPM=
Set _hourPM=
If %_nowh% GEQ %_hourAM% If %_nowm% GEQ %_minAM% (
If %_nowh% LSS %_hourPM% If %_nowm% LSS %_minPM% Goto _approved
) ELSE (

3 个答案:

答案 0 :(得分:1)

你可以这样做:

@echo off&cls
set "$AM=0950"
set "$PM=1800"
set "$Local_T=%time:~0,2%%time:~3,2%"
set "$Sw_T=True"

if %$Local_T% lss %$AM% set "$Sw_T=False"
if %$Local_T% gtr %$PM% set "$Sw_T=False"

If "%$Sw_T%"=="True" (
  echo Path\to\your\program.exe
  exit /b)
cls&echo "YOU CAN RUN THIS PROGRAM ONLY BETWEEN 09:50 AND 18:00"
pause
exit

要启动程序,您必须更换以下行:

echo Path\to\your\program.exe

再见你的节目之路。

答案 1 :(得分:0)

你可以尝试一种完全不同的方法。

  1. 在某处分配“flag folder”。

  2. 使批处理文件检查该文件夹中是否存在标志(特定名称为空文件)。如果存在,请运行该程序,否则拒绝运行该程序。 (或者你可以改变逻辑,如果你愿意的话。)

  3. 创建两个计划任务,一个在上午10:00运行并创建标志文件,另一个在下午6:00运行,删除它。 (它可以是另一个或相同的批处理文件,接受一个参数来指定是否创建或删除标记文件。)

  4. 批处理文件在日期/时间计算方面不是很好,因此,在我看来,将该作业委托给能够做得很好的系统组件会更好(也非常容易) - 与之合作。

答案 2 :(得分:0)

这使用子程序将当前时间转换为24h格式,以防当前时间为12h格式。

@echo off

    setlocal enableextensions

    call :getTime24h now

    if "%now%" geq "18:00:00,00" goto noRun
    if "%now%" lss "10:00:00,00" goto noRun

    echo Here the program should be called

    goto endProcess

:noRun
    echo ERROR: Program can not be run now
    pause

:endProcess    
    endlocal
    exit /b

:getTime24h returnVariable
    setlocal enableextensions
    set "ts=%time%"
    if "%ts:pm=%"=="%ts%" ( set "adjust=0" ) else ( set "adjust=12" )
    for /f "tokens=1-4 delims=:-.,apm " %%a in ("%ts%") do ( set /a "h=100%%a+adjust", "m=100%%b", "s=100%%c", "c=100%%d" )
    endlocal & set "%~1=%h:~-2%:%m:~-2%:%s:~-2%,%c:~-2%" & exit /b