找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25396|回复: 10

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

[复制链接]
发表于 2016-4-11 07:59:06 | 显示全部楼层 |阅读模式
本帖最后由 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号?
尽量不生成临时文件。

评分

参与人数 1PB -4 收起 理由
pcl_test -4 勿发笼统的标题

查看全部评分

发表于 2016-4-11 08:26:23 | 显示全部楼层
if 那句的双引号去掉,你现在是字符串比较,不是数值比较
发表于 2016-4-11 09:20:35 | 显示全部楼层
用schtasks就不会产生这么奇怪的要求了。
 楼主| 发表于 2016-4-11 09:37:57 | 显示全部楼层
回复 2# CrLf


    感谢。
 楼主| 发表于 2016-4-11 09:38:15 | 显示全部楼层
回复 3# codegay


    环境特定WIndows7
发表于 2016-4-11 09:41:15 | 显示全部楼层
本帖最后由 happy886rr 于 2016-4-11 09:47 编辑

回复 5# _FPXI19
一句sort不就完事了。
  1. at|sort
复制代码

评分

参与人数 1技术 +1 收起 理由
_FPXI19 + 1 感谢帮了很大忙

查看全部评分

发表于 2016-4-11 13:08:58 | 显示全部楼层
回复 5# _FPXI19


    Win7支持schtasks
 楼主| 发表于 2016-4-14 12:41:57 | 显示全部楼层
回复 6# happy886rr


    但是在for里面放不了|,会提示此时不应该有|
发表于 2016-4-14 16:43:51 | 显示全部楼层
回复 8# _FPXI19
晕,加个转义啊^
 楼主| 发表于 2016-4-16 14:18:39 | 显示全部楼层
回复 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参数有没有办法只显示数字?
 楼主| 发表于 2016-4-16 14:20:54 | 显示全部楼层
回复 9# happy886rr


    我看了论坛教程可以加个eol参数,谢谢你。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 10:01 , Processed in 0.020043 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表