Batch file 设置变量时出现无效数字错误
我正在使用来自的代码获取明天的日期。详情如下:Batch file 设置变量时出现无效数字错误,batch-file,Batch File,我正在使用来自的代码获取明天的日期。详情如下: @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%
@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(而不是
刚刚设置)以克服尝试执行八进制的问题
08年和09年的算术。这是因为前导零
在算术赋值过程中被删除
假设在日和月中有前导零: set /a d=1%date:~0,2%-100 set /a m=1%date:~3,2%-100 set /a y=%date:~6,4% 设置/AD=1%日期:~0,2%-100 设置/a m=1%日期:~3,2%-100 设置/a y=%date:~6,4%
日期格式取决于本地/区域设置。你的区域设置是什么?日期格式是dd-MM-yyyy,正如本文所假设的。如果我将月份从8月(08)改为11月(10),它运行得很好。在白天,你有前导零吗?如果白天有前导零,它运行得很好。狗屎工作,仍然不确定为什么原始脚本在当月失败,而不是day@user1151923:可能是因为月份是
08
(无效的八进制值),而日期是30
(有效的十进制值)。