Как вы заявили, нет проблем с использованием другой переменной, вы можете сделать это следующим образом (в настройках моей среды используется другая подстрока)
set /a "yearminus1=%date:~6,10%-1"
Для вас, я предполагаю, что это будет set /a "yearminus1=%date:~10,4%-1"
, но я не могу проверить это.
Использование параметра /a
с set
указывает, что вы будете давать выражение для оценки, а не просто сохранять выражение в переменной как есть.
Можно использовать следующие операторы:
+ Add set /a "_num=_num+5"
+= Add variable set /a "_num+=5"
- Subtract (or unary)set /a "_num=_num-5"
-= Subtract variable set /a "_num-=5"
* Multiply set /a "_num=_num*5"
*= Multiply variable set /a "_num*=5"
/ Divide set /a "_num=_num/5"
/= Divide variable set /a "_num/=5"
% Modulus set /a "_num=5%%2"
%%= Modulus set /a "_num%%=5"
! Logical negation 0 (FALSE) ⇨ 1 (TRUE) and any non-zero value (TRUE) ⇨ 0 (FALSE)
~ One's complement (bitwise negation)
& AND set /a "_num=5&3" 0101 AND 0011 = 0001 (decimal 1)
&= AND variable set /a "_num&=3"
| OR set /a "_num=5|3" 0101 OR 0011 = 0111 (decimal 7)
|= OR variable set /a "_num|=3"
^ XOR set /a "_num=5^3" 0101 XOR 0011 = 0110 (decimal 6)
^= XOR variable set /a "_num=^3"
<< Left Shift. (sign bit ⇨ 0)
>> Right Shift. (Fills in the sign bit such that a negative number always remains negative.)
Neither ShiftRight nor ShiftLeft will detect overflow.
<<= Left Shift variable set /a "_num<<=2"
>>= Right Shift variable set /a "_num>>=2"
( ) Parenthesis group expressions set /a "_num=(2+3)*5"
, Commas separate expressions set /a "_num=2,_result=_num*5"
Отсюда