在我作的批处理中需要判断多年的闰年和平年情况,一下是我的批处理程序:
@echo off
set /a year_begin=1948
set /a year_end=2006
set /a loop=%year_begin%-1
setlocal EnableDelayedExpansion
for /l %%i in (%year_begin%,1,%year_end%) do (
set /a loop+=1
set /a a=!loop! %% 4
set /a b=!loop! %% 100
set /a c=!loop! %% 400
set /a daynum=365
if "!a!"=="0" (
if not "!b!"=="0" set /a daynum=366
if "!c!"=="0" set /a daynum=366
) else set /a daynum=365
echo !loop! !daynum! )
以上是我作试验用的批处理,结果正确,可以运行,但是由于还要在for命令中嵌套很多其它的命令,所以我把判断闰年的部分写成调用的形势。我尝试的方案如下:
::@echo off
set /a year_begin=1948
set /a year_end=2006
set /a loop=%year_begin%-1
set /a daynum=365
setlocal EnableDelayedExpansion
for /l %%i in (%year_begin%,1,%year_end%) do (
set /a loop+=1
call :leap !loop! !daynum!
echo !loop! !daynum! )
:leap
::判断润年和平年
echo %1 %2
@echo off
set /a a=%1 %% 4
set /a b=%1 %% 100
set /a c=%1 %% 400
set /a %2=365
if "!a!"=="0" (
if not "!b!"=="0" set /a %2=366
if "!c!"=="0" set /a %2=366
) else set /a %2=365
其中的daynum是我想得到的结果,但是运行的时候总是显示找不到操作数,请各位高人指点一二!
@echo off
set /a year_begin=1948
set /a year_end=2006
set /a loop=%year_begin%-1
setlocal EnableDelayedExpansion
for /l %%i in (%year_begin%,1,%year_end%) do (
set /a loop+=1
set /a a=!loop! %% 4
set /a b=!loop! %% 100
set /a c=!loop! %% 400
set /a daynum=365
if "!a!"=="0" (
if not "!b!"=="0" set /a daynum=366
if "!c!"=="0" set /a daynum=366
) else set /a daynum=365
echo !loop! !daynum! )
以上是我作试验用的批处理,结果正确,可以运行,但是由于还要在for命令中嵌套很多其它的命令,所以我把判断闰年的部分写成调用的形势。我尝试的方案如下:
::@echo off
set /a year_begin=1948
set /a year_end=2006
set /a loop=%year_begin%-1
set /a daynum=365
setlocal EnableDelayedExpansion
for /l %%i in (%year_begin%,1,%year_end%) do (
set /a loop+=1
call :leap !loop! !daynum!
echo !loop! !daynum! )
:leap
::判断润年和平年
echo %1 %2
@echo off
set /a a=%1 %% 4
set /a b=%1 %% 100
set /a c=%1 %% 400
set /a %2=365
if "!a!"=="0" (
if not "!b!"=="0" set /a %2=366
if "!c!"=="0" set /a %2=366
) else set /a %2=365
其中的daynum是我想得到的结果,但是运行的时候总是显示找不到操作数,请各位高人指点一二!
