表达式中缺少运算符
问题描述:
我想定义我的年份是闰年。我把代码@Aacini:Batch file leap year?表达式中缺少运算符
set /A "leap=!(year%%4) + (!!(year%%100)-!!(year%%400))"
if %leap% equ 1 echo Is leap year
但是当我运行它,它说有丢失的运算符。 你对我如何解决它有什么想法吗?
答
这可能比它更容易。圆括号可用于SET /A
声明中,但模数将在加法或减法之前发生。
@ECHO OFF
SET /A YEAR=%1
SET /A "LEAP=YEAR %% 4 + YEAR %% 100 - YEAR %% 400"
IF %LEAP% EQU 0 (ECHO %YEAR% is a leap year)
通过将有问题的年份作为命令脚本的一个参数来使用它。
CALL leapyear.bat 2017
HT到@aschipft在SET /A
约YEAR
不需要百分号。
你在某个地方设置年,对吧? – SomethingDark
是否启用了[延迟扩展](http://ss64.com/nt/delayedexpansion.html)?好吧,不要因为它会消耗'!'运算符,或者在'^!'的情况下逃避它们... – aschipfl
@SomethingDark是的,我将它设置在我的代码的开头,它显示正确的日期,当我使用'echo%year%' –