1

这个脚本如何不断返回错误?

@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 开始时,它不会出现此错误。
我在这个脚本上找不到错误

4

2 回答 2

2

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

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

于 2013-03-08T10:18:01.980 回答
0

您不需要 SET 中的 /a 来为变量赋值:
set tsday=%edayn%

我从你的 csd 得到月份和日期

%csd:~4,2%
%csd:~7,2%

编辑
如果您想删除前导零,请将每个字段分成两部分(对于十位和单位),然后对于十位字段:-使用语法
搜索并用空字符串 '' 替换 '0'%variable: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%
于 2013-03-08T09:47:52.277 回答