2014-05-12 3 views
1

현재 프로그램을 시작하기 전에 현재 시간과 지정된 시간을 비교하는 배치 파일 작업을하고 있습니다. 즉 : 배치 파일은 지난 오전 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

현지 시간이 오전 10시에서 오후 18시 사이 인 경우 프로그램을 다시 시작하십시오. 그렇지 않으면 메시지를 표시합니다. 그 맞습니까 ? – SachaDee

답변

1

당신은 다음과 같이 수행 할 수 있습니다 :

내 코드, 지금이다

echo Path\to\your\program.exe 

:

@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 

당신이 라인을 교체해야 프로그램을 시작하려면 프로그램의 경로로 가십시오.

+0

코드가 수정되었습니다! – SachaDee

+0

고마워요, 당신의 코드가 정확히 내가하고 싶었던 일을합니다! 비록 그것이 어떻게 작동하는지 완전히 이해하지는 못하지만 그것을 이해하기 위해 분석 할 것입니다. – Maverick

0

완전히 다른 접근 방식을 시도해 볼 수 있습니다.

  1. 어딘가에 "깃발 폴더"를 할당하십시오.

  2. 배치 파일에서 해당 폴더에 플래그 (특정 이름의 빈 파일)가 있는지 확인하십시오. 존재하는 경우 프로그램을 실행하고 그렇지 않으면 프로그램 실행을 거부하십시오.

  3. 두 개의 예약 된 작업 (하나는 오전 10시에 실행되고 다른 하나는 오후 6시에 실행중인 플래그 파일을 만들고 다른 작업은 삭제)을 만듭니다. (이 플래그 파일을 만들거나 삭제할지 여부를 지정하는 매개 변수를 받아들이는 다른 또는 같은 배치 파일이 될 수 있습니다.)

배치 파일 내 의견으로는, 날짜/시간 계산에 매우 좋지 않다, 그래서, 그 일을 아주 잘 할 수있는 시스템 구성 요소에 위임하는 것이 더 좋을 것입니다.

0

현재 시간이 12h 형식 인 경우 서브 루틴을 사용하여 현재 시간을 24 시간 형식으로 변환합니다.

@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 
관련 문제