批处理 截取时间 报错:无效数字。数字常数只能是十进制(17),十六进制(0x11)或八进制(021)
发布网友
发布时间:2022-05-15 00:20
我来回答
共3个回答
热心网友
时间:2023-11-13 02:34
set nowTime=%time%
set /a nowTime=(1%nowTime:~0,2%-100)*360000 + (1%nowTime:~3,2%-100)*6000 + (1%nowTime:~6,2%-100)*100 + (1%nowTime:~9,2%-100)
这是换算成厘秒的,毕竟批处理无法进行浮点数运算。例如:“20:01:02.03”,有3个“前导0” ,但计算时就变成了set /a nowTime=(120-100)*360000 + (101-100)*6000 + (102-100)*100 + (103-100),也就是说任何运算步骤都不会出现“前导0”,也就不存在8位数的问题了。
热心网友
时间:2023-11-13 02:34
因为批处理计算里碰到0开始的数会被认为是8进制数,当你取两位数前有0,且个位是8或9时就出错了,而07以下则8进制数和10进制是相同的,只有08或09时会认为是不合格的数追问那要怎么改进?
追答只能是你自己麻烦点啦 两方案
1 一位一位地取相加如:set/a st=%time:~9,1%*10+%time:~10,1%
2 取两位先判断首位是不是0是把它去掉再参加计算 if "%st:~,1%"=="0" set st=%st:~1%
热心网友
时间:2023-11-13 02:35
set /a cc=%ed:0=%-%st:0=%
批处理 截取时间 报错:无效数字。数字常数只能是十进制(17),十六进制...
set /a nowTime=(1%nowTime:~0,2%-100)*360000 + (1%nowTime:~3,2%-100)*6000 + (1%nowTime:~6,2%-100)*100 + (1%nowTime:~9,2%-100)这是换算成厘秒的,毕竟批处理无法进行浮点数运算。例如:“20:01:02.03”,有3个“前导0” ,但计算时就变成了set /a nowTime=(120-100...
批处理显示时间报错:无效数字。数字常数只能是十进制(17),十六进制(0x...
set /a yyyy=%date:~0,4%,mm=1%date:~5,2%%%100,dd=1%date:~8,2%%%100,od=dd-1
...时间报错:无效数字。数字常数只能是十进制(17),十六进制(0x...
2、就是因为你设置的08是无效数字,数字常数只能是十进制(17),十六位进制(0x11)或八进制(021)。所以一开始给变量赋值就不能被识别。这里并不是因为开始设置成文本变量导致不能计算的问题。3、set表明要给后面的变量赋值,可以带/p和/a。当带/p时,意思是从键盘给变量赋值;带/a时表示给在批处...
批处理中set命令的疑问
就是因为你设置的 08 是无效数字,数字常数只能是十进制(17),十六位进制(0x11)或八进制(021)。所以一开始给变量赋值就不能被识别。这里并不是因为开始设置成文本变量导致不能计算的问题。如果设置 set a=8 set /a a=a+0 那是可以得到结果 8 的,最后一步能够把文本变量转换为数值变量计算 ...
批处理中set命令的疑问
set表明要给后面的变量赋值,可以带/p和/a。当带/p时,意思是从键盘给变量赋值;带/a时表示给在批处理中赋初值。%a%表示去变量a的值。for很难的,要是你吧for理解好了就把批处理学好了……
帮忙看看批处理提取昨日日期中的问题
::注意: 你从网上复制我的内容会在所有内容后面多出个空格的,你要自己删除所有最后的空格就不会出错了.就如"set yyyy=%date:~0,4% ",就是这里最后会多了空格要删除就不会出错了.是所有啊,改为"set yyyy=%date:~0,4%"就对了.echo off&setlocal enabledelayedexpansion set yyyy=%date:~0,...
批处理转exe的问题。
set /a time=%h%*3600+%m%*60 分开写吧。试试~不然没有什么办法了的!set/a time=%h%*3600 set/a time+=%m%*60