批处理脚本集/错误

时间:2013-03-08 08:57:24

标签: batch-file

此脚本如何继续返回错误?

@echo off
set csd=Fri 03/08/2013
set edayn=%csd:~7,1%%csd:~8,1%
set /a tsday=%edayn%
echo %edayn%
echo %tsday%
pause

时间格式:ddd mm / dd / yyyy
“csd”变量是我打开脚本的那一天 为了消除变量“edayn”或日期的零,我使用“set / a”来消除它 但它显示了这个错误:

Invalid number.  Numeric constants are either decimal (17),
hexadecimal (0x11), or octal (021).
08
ECHO is off.
Press any key to continue . . .

如果当天没有从0开始,则不会出现此错误 我在这个脚本上找不到错误

2 个答案:

答案 0 :(得分:2)

您收到错误的原因是因为八进制数(在/a命令中使用set标志时)的前缀是数字0(零)。

08不是有效数字的原因是因为八进制数系统只包含8个符号(0-7),这意味着08是不可能的。

答案 1 :(得分:0)

SET中不需要/ a仅用于为变量赋值:
set tsday=%edayn%

我从你的csd获得了

的月和日
%csd:~4,2%
%csd:~7,2%

修改
如果你想杀死前导零,将每个字段分成两部分(数十和单位),然后分成十个字段: -
 使用%variable:0=%语法

搜索并用空字符串''替换'0'
@echo off
set csd=Fri 13/08/2013
set day1=%csd:~4,1%
set day2=%csd:~5,1%
set mo1=%csd:~7,1%
set mo2=%csd:~8,1%
set day=%day1:0=%%day2%
set mo=%mo1:0=%%mo2%
echo %day%/%mo%