bat无故报错打印混乱的解决

本文分享了两个批处理脚本调试经验:一是通过增加无意义的ping操作解决因操作数过多导致的数字识别错误;二是修正注释方式避免误将::当作标签执行。

1.

下面语句加了一个无意义的ping操作。
不加的时候经常报错,报操作数不是数字,实际上打印发现NOW值和格式并没有错误。
怀疑是下面操作数太多了,而执行速度又太快,导致执行时总是很容易出错。通过增加一个无效的ping操作,增加算术运算前的缓冲,结果不再报错了。

:GetSeonds
set NOW=%time%
ping 127.0.0.1 -n 1 -w 0.1 >nul
set /a GetSeonds=%NOW:~0,2%*60+%NOW:~3,2%*60+%NOW:~6,2%
GOTO :eof

 

1.1

实际后面发现上面1的时间计算错误是由于截取字符串可能出现08 09,因为0x运算时会被当做8进制 ,所以08 09非法。

2.

原来有个bat脚本,里面注释大量使用了::,就发现很容易出现一些无缘无故的信息打印。后面查到::本身并非真正的注释,只是由于:后面不是字母所以是一个错误标签,一般标签本来也不是可执行语句只是名字,所以可以被作为注释,只是容易在执行时其中某些字符错误被当成语句执行。

正确的注释应该是用REM(Remark), 修改后该脚本不再打印混乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值