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