我目前正在处理一个批处理文件,该文件将当前时间与启动程序之前的指定时间进行比较。 即:批处理文件检查它是否已经过了上午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 (
答案 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)
你可以尝试一种完全不同的方法。
在某处分配“flag folder”。
使批处理文件检查该文件夹中是否存在标志(特定名称为空文件)。如果存在,请运行该程序,否则拒绝运行该程序。 (或者你可以改变逻辑,如果你愿意的话。)
创建两个计划任务,一个在上午10:00运行并创建标志文件,另一个在下午6:00运行,删除它。 (它可以是另一个或相同的批处理文件,接受一个参数来指定是否创建或删除标记文件。)
批处理文件在日期/时间计算方面不是很好,因此,在我看来,将该作业委托给能够做得很好的系统组件会更好(也非常容易) - 与之合作。
答案 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