楼主要实现的功能有两个:读取数字、过滤英文字母(我的代码特殊字符也过滤掉了)、判断数字大小
首先要读取昨天的数量
可以看到楼主的文件很有规律,前面部分对我们的批处理无关,后数字是全角“:”后面的部分
那么利用 for 的分隔符 delims 功能,把分隔符设置为“:”,这样文件的每一行就被我们割成了两部分,一部分是“:”前面的日期等,另一部分就是“:”后面的数字
从文本可以看出,越往下的行时间越晚,那么最后一行的数字必定是我们想要的,那么上面割出来的第一部分就可以不要了,用 tokens 功能,只留下第二部分
最后保存到变量里面,直接用 set 就可以了,下一行的数字会覆盖上一行的数字,这样就读出了最后一行的数字
那么就要过滤掉英文字母还有其他乱七八糟的东西
set 的 /a 功能是数值计算,所以给变量赋值的时候必定是数字,这样就实现了过滤的功能(顺带还支持计算了,输入204000+500也可以,得到结果204500)
判断数字大小
直接用 if 比较就可以了,如果小于的话就跳转到开头部分继续输入,否则的话就取消关机等动作
另外纠正一个,你 echo 的时候用的是 > ,这样会清空上次的记录,我的代码里面已经改过来了
- @echo off
- shutdown -s -t 600
- for /f "tokens=2 delims=:" %%a in (数量.txt) do set "last=%%a"
- :loop
- cls
- echo 如果不输入在10分钟后关机
- set /p a=
- set /a "a=a"
- if %a% leq %last% goto loop
- echo %date%%time%数量为:%a%>>数量.txt
- shutdown -a
复制代码
|