Board logo

标题: [系统相关] [已解决] 批处理if比较数字/数值的大小出现误判/判断错误/有误是什么原因? [打印本页]

作者: _FPXI19    时间: 2016-4-11 07:59     标题: [已解决] 批处理if比较数字/数值的大小出现误判/判断错误/有误是什么原因?

本帖最后由 pcl_test 于 2017-4-10 13:54 编辑

因为at的任务ID显示有问题,没有按照从小到大的顺序,导致ID超过10后,9永远是排在最后显示
  1. >at
  2. 状态 ID     日期                    时间          命令行
  3. -------------------------------------------------------------------------------
  4.         1   今天                    12:12         aaa
  5.        10   今天                    12:12         aaa
  6.        11   今天                    12:12         aaa
  7.        12   今天                    12:12         aaa
  8.         2   今天                    12:12         aaa
  9.         3   今天                    12:12         aaa
  10.         4   今天                    12:12         aaa
  11.        47   今天                    7:53          Ver
  12.         5   今天                    12:12         aaa
  13.         6   今天                    12:12         aaa
  14.         7   今天                    12:12         aaa
  15.         9   今天                    12:12         aaa
复制代码
  1. ::获取时间变量
  2. set /a H=%time:~0,2%
  3. set /a M=%time:~3,2%
  4. set /a S=%time:~6,2%
  5. ::计算延迟时间
  6. if not %M% GEQ 53 (set /a M=M+7) else (set /a H=H+1&set /a M=%M%+7-60)
  7. ::修正延迟后的时间数值
  8. if %H% LSS 10 (set H=0%H%)
  9. if %M% LSS 10 (set M=0%M%)
  10. if %H% EQU 24 (set H=00)
  11. ::获取当前任务ID号
  12. at %H%:%M% "Ver"&for /f "skip=2" %%i in ('at') do (set /a ID=%%i+1&at %%i /delete)
  13. ::写入同步任务并自我删除
  14. at %H%:%M% "net time /set /yes&at %ID% /delete"
复制代码
我尝试在for里面嵌套if来比较大小来筛选,不过if里面的赋值不成功
  1. ::获取当前任务ID号并比较大小
  2. set /a ID=0
  3. setlocal enabledelayedexpansion
  4. at %H%:%M% "Ver"&for /f "skip=2" %%i in ('at') do (
  5.   if "%%i" GTR "!ID!" (set /a ID=%%i)
  6.   )
  7. echo %ID%
  8. 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不就完事了。
  1. at|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
  1. 2
  2. 3
  3. 4
  4. 5
  5. 6
  6. 7
  7. 9
  8. 10
  9. 11
  10. 12
  11. 状态
  12. 请按任意键继续. . .
复制代码
sort参数有没有办法只显示数字?
作者: _FPXI19    时间: 2016-4-16 14:20

回复 9# happy886rr


    我看了论坛教程可以加个eol参数,谢谢你。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2