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

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), 修改后该脚本不再打印混乱。

posted @ 2017-06-08 23:33  dzqabc  阅读(523)  评论(0编辑  收藏  举报