我的代码是:
@echo off
set /a var = %date:~-10,2%
IF ("%var%" EQU "3")
(
echo hello
)
ELSE
(
echo no
)
它给出了语法错误。
答案 0 :(得分:1)
@echo off
set /a var = %date:~-10,2%
IF ("%var%" EQU "3")
此代码将var
设置为日期最后10个字符中前2个的值。
如果这两个字符为08
或09
,则批次中的前导0
表示八进制值,则会失败。除非您对该项使用了抑制前导零,否则需要
set /a var = 1%date:~-10,2% - 100
即将1
后的2个字符串起来(假设您选择日期数字为101..131),然后减去100
。
if
语句正在尝试将文字字符串'(“ var 的值'''与'”3“进行比较)'这两个字符串永远不会相等。语法错误是因为(
必须与if
位于同一物理行上,即您需要
IF %var% EQU 3 (
如果你使用这样的引号
IF "%var%" EQU "3" (
将工作,因为您使用var
设置了set /a
。如果您只是使用子字符串%date:~-10,2%
,那么因为它的长度为2,所以此文字比较需要03
或3
完全取决于您的日期-format。
答案 1 :(得分:0)
问题在于括号的位置。
试试这个:
@echo off
set /a var = %date:~-10,2%
IF "%var%" EQU "3" (
echo hello
) ELSE (
echo no
)