2013-07-12 2 views
1
goto time 

:time 
set tm=%time% 
set hh=%tm:~0,2% 
set mm=%tm:~3,2% 
set ss=%tm:~6,2% 
set ms=%tm:~7,2% 
goto date 

:date 
set dt=%date% 
set wd=%dt:~0,3% 
set mh=%dt:~4,2% 
set dy=%dt:~6,2% 
set yr=%dt:~8,4% 
goto scheduletimes 

:scheduletimes 
goto hour1 
:hour1 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a "HH"="%%b" 
if %HH% equ 6 goto minutes1 
pause 
goto time 
:minutes1 
for /f "tokens=1*delims=0" %%a in ("$0%mm%") do set /a "MM"="%%b" 
if "%MM%"=="00" goto seconds1 
pause 
goto time 
:seconds1 
for /f "tokens=1*delims=0" %%a in ("$0%ss%") do set /a "SS"="%%b" 
if %SS% lss 10 goto day1 
pause 
goto time 

:day1 
echo success 
echo %hh% 
echo %mm% 
echo %ss% 
pause 
goto time 

여러분들은 시간 체크 루프라는 것을 알 수 있습니다. 시간이 6시 10 분 : 10인지 확인합니다. 기본적으로 내 문제는 그것이 비록 그 시간에 명중 할 때 명령을 실행할 때까지 잘 실행된다는 것입니다. 그것은이 섹션의 < 십초된다하자마자 :배치 : 내 코드 루프 중에 변수 설정이 중지됩니다. 모두 도움 Welcome

:minutes1 
for /f "tokens=1*delims=0" %%a in ("$0%mm%") do set /a "MM"="%%b" 
if %MM% equ 0 goto seconds1 

% mm %MM 설정 중지를 그리고 그것은 나에게 누락 피연산자 오류가 있습니다.

첫 번째 실행 후 작업을 계속하려면 도움이 필요합니다.

(그래, 난이 일시 정지가 오프 더 @echo는,이 디버깅 목적으로하지 않습니다 알고 그것은 @echo 오프와 너무 일시 정지하지 않고 않습니다.) 편집

:

C:\Users\krato_000\Desktop>goto scheduletimes 

C:\Users\krato_000\Desktop>goto hour1 

C:\Users\krato_000\Desktop>for /F "tokens=1*delims=0" %a in ("$0 6") do set /a " 
HH"="%b" 

C:\Users\krato_000\Desktop>set /a "HH"=" 6" 

C:\Users\krato_000\Desktop>if 6 EQU 6 goto minutes1 

C:\Users\krato_000\Desktop>for /F "tokens=1*delims=0" %a in ("$000") do set /a " 
MM"="%b" 

C:\Users\krato_000\Desktop>set /a "MM"="" 
Missing operand. 

C:\Users\krato_000\Desktop>if "00" == "00" goto seconds1 

C:\Users\krato_000\Desktop>for /F "tokens=1*delims=0" %a in ("$019") do set /a " 
SS"="%b" 

C:\Users\krato_000\Desktop>set /a "SS"="19" 

C:\Users\krato_000\Desktop>if 19 LSS 10 goto day1 

C:\Users\krato_000\Desktop>pause 
Press any key to continue . . . 
로그인
+0

정확하게 오전 6:10 및 10 초에 루틴을 실행하려고합니까? – foxidrive

답변

2

아래의 첫 번째 줄을 추가해야 배치 %mm%%MM% 구분하지 않습니다. 이것을 시도하십시오 :

:minutes1 
set /a min=0 
for /f "tokens=1*delims=0" %%a in ("$0%mm%") do set /a min=%%b 2>nul 
echo %min% 
if %min% equ 0 goto seconds1 
+0

그 영역에 2> nul을 덧붙이면 문제가 해결 된 것 같습니다. –

1

아마도 delims = 0과 근본적인 문제가 있습니다. 값이 00이면 아무것도 얻지 못할 것입니다. 그래서주의 사항 몇 가지 변수

if "%HH%"=="6" goto minutes1 

if "%MM%"=="" set MM=0 & goto seconds1 

을 인용하고

if "%SS%"=="" set SS=0 
if %SS% lss 10 goto day1 
+0

"실행 중에 누락 된 피연산자"가 무슨 뜻인지 알지 못합니다. – RGuggisberg

+0

두 가지를 말하게하십시오./: "토큰 = 1 * delims = 0"에 대해 : minutes1 뒤에/** 누락 된 피연산자 ** 오류가 발생합니다./a MM = %% b if ("$ 0 % mm %") % MM % equ 0 goto seconds1' 내 수술에 명시된대로. 내가 말할 때 실행은 올바른 변수를 찾은 후에 실행할 명령을 의미합니다. 또한 이제는 내가 코드를 엉망으로 만들었습니다 ** 여분의 피연산자 **가있는 것 같습니다 : /// "% seconds % 0 in % ("$ 0 % ss % "/ tofs = 1 * delims = 0") % SS % lss 10 goto day1'이라면 SS = %% b 을 설정하십시오. 당신이'if "% SS %"== ""goto day1'을 추가하라는 초를 고치려면 구문 오류가 발생합니다. –

+0

또한 공백으로 변경하는 경우 % MM % "==" "goto seconds1'은 0이 아닌 공백인지 확인하려고하므로 전혀 작동하지 않는 것 같습니다. 일부를 돕는다. –