设置变量时出现无效的数字错误

时间:2013-08-30 09:03:19

标签: batch-file

我正在使用this thread中的代码来获取明天的日期。它如下:

@echo off

set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%

:loop
  set /a d+=1

  if %d% gtr 31 (
    set d=1
    set /a m+=1

    if %m% gtr 12 (
      set m=1
      set /a y+=1
    )
  )
xcopy /d:%m%-%d%-%y% /l . .. >nul 2>&1 || goto loop

echo %d%/%m%/%y%

但是我收到以下错误:

  

号码无效。数字常量是十进制(17),   十六进制(0x11)或八进制(021)。

虽然在帖子的文字中说:

  

为变量赋值时,我们使用SET / A(而不是   只是SET)克服尝试执行八进制的问题   '08'和'09'之后的算术运算。这是因为前导零   在算术分配期间被修剪掉。

1 个答案:

答案 0 :(得分:7)

假设,您在日和月中有前导零:

set /a d=1%date:~0,2%-100
set /a m=1%date:~3,2%-100
set /a y=%date:~6,4%