标题: [系统相关] [已解决] 批处理if比较数字/数值的大小出现误判/判断错误/有误是什么原因? [打印本页]
作者: _FPXI19 时间: 2016-4-11 07:59 标题: [已解决] 批处理if比较数字/数值的大小出现误判/判断错误/有误是什么原因?
本帖最后由 pcl_test 于 2017-4-10 13:54 编辑
因为at的任务ID显示有问题,没有按照从小到大的顺序,导致ID超过10后,9永远是排在最后显示- >at
- 状态 ID 日期 时间 命令行
- -------------------------------------------------------------------------------
- 1 今天 12:12 aaa
- 10 今天 12:12 aaa
- 11 今天 12:12 aaa
- 12 今天 12:12 aaa
- 2 今天 12:12 aaa
- 3 今天 12:12 aaa
- 4 今天 12:12 aaa
- 47 今天 7:53 Ver
- 5 今天 12:12 aaa
- 6 今天 12:12 aaa
- 7 今天 12:12 aaa
- 9 今天 12:12 aaa
复制代码
- ::获取时间变量
- set /a H=%time:~0,2%
- set /a M=%time:~3,2%
- set /a S=%time:~6,2%
-
- ::计算延迟时间
- if not %M% GEQ 53 (set /a M=M+7) else (set /a H=H+1&set /a M=%M%+7-60)
-
- ::修正延迟后的时间数值
- if %H% LSS 10 (set H=0%H%)
- if %M% LSS 10 (set M=0%M%)
- if %H% EQU 24 (set H=00)
-
- ::获取当前任务ID号
- at %H%:%M% "Ver"&for /f "skip=2" %%i in ('at') do (set /a ID=%%i+1&at %%i /delete)
-
- ::写入同步任务并自我删除
- at %H%:%M% "net time /set /yes&at %ID% /delete"
复制代码
我尝试在for里面嵌套if来比较大小来筛选,不过if里面的赋值不成功- ::获取当前任务ID号并比较大小
- set /a ID=0
- setlocal enabledelayedexpansion
- at %H%:%M% "Ver"&for /f "skip=2" %%i in ('at') do (
- if "%%i" GTR "!ID!" (set /a ID=%%i)
- )
- echo %ID%
- pause
复制代码
试了两天都没什么思绪,请问如何可以实现获取到数值最大的那个ID号?
尽量不生成临时文件。
作者: CrLf 时间: 2016-4-11 08:26
if 那句的双引号去掉,你现在是字符串比较,不是数值比较
作者: codegay 时间: 2016-4-11 09:20
用schtasks就不会产生这么奇怪的要求了。
作者: _FPXI19 时间: 2016-4-11 09:37
回复 2# CrLf
感谢。
作者: _FPXI19 时间: 2016-4-11 09:38
回复 3# codegay
环境特定WIndows7
作者: happy886rr 时间: 2016-4-11 09:41
本帖最后由 happy886rr 于 2016-4-11 09:47 编辑
回复 5# _FPXI19
一句sort不就完事了。复制代码
作者: gawk 时间: 2016-4-11 13:08
回复 5# _FPXI19
Win7支持schtasks
作者: _FPXI19 时间: 2016-4-14 12:41
回复 6# happy886rr
但是在for里面放不了|,会提示此时不应该有|
作者: happy886rr 时间: 2016-4-14 16:43
回复 8# _FPXI19
晕,加个转义啊^
作者: _FPXI19 时间: 2016-4-16 14:18
回复 9# happy886rr - 2
- 3
- 4
- 5
- 6
- 7
- 9
- 10
- 11
- 12
- 状态
- 请按任意键继续. . .
复制代码
sort参数有没有办法只显示数字?
作者: _FPXI19 时间: 2016-4-16 14:20
回复 9# happy886rr
我看了论坛教程可以加个eol参数,谢谢你。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |