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

[文本处理] [已解决]BAT代码的判断语句有没问题,不会跳到指定的标签

[复制链接]
发表于 2014-6-8 17:50:30 | 显示全部楼层 |阅读模式
请帮忙看下这代码的判断语句有没问题,不会跳到指定的标签,还有再想问下,在每个标签里面的goto end,能不能不用或者用什么代码来跳出标签,然后运行标签外面的其他命令,谢谢
  1. @echo on& setlocal enabledelayedexpansion
  2. set t1=%TIME:~1,1%
  3. set t2=%TIME:~0,2%
  4. if %t2% LSS 10 (set t=0%t1%) else (set t=%t2%)

  5. if 00 GTR %t% if %t% LSS 14 goto rnckpi07
  6. if 14 GTR %t% if %t% LSS 22 goto rnckpi15
  7. if %t% EQU 23 goto rnckpi23

  8. :rnckpi07
  9. echo rnckpi07
  10. goto end

  11. :rnckpi15
  12. echo rnckpi15
  13. goto end

  14. :rnckpi23
  15. echo rnckpi23
  16. goto end

  17. :end
  18. pause
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-6-8 18:07:32 | 显示全部楼层
  1. @echo off& setlocal enabledelayedexpansion
  2. set t1=%TIME:~1,1%
  3. set t2=%TIME:~0,2%
  4. if %t2% LSS 10 (set t=0%t1%) else (set t=%t2%)

  5. if %t% GTR 00 if %t% LSS 14 goto rnckpi07
  6. if %t% GTR 14 if %t% LSS 22 goto rnckpi15
  7. if %t% EQU 23 goto rnckpi23

  8. :rnckpi07
  9. echo rnckpi07
  10. goto end

  11. :rnckpi15
  12. echo rnckpi15
  13. goto end

  14. :rnckpi23
  15. echo rnckpi23
  16. goto end

  17. :end
  18. pause
复制代码
发表于 2014-6-8 18:09:45 | 显示全部楼层
if 00 GTR %t% if %t% LSS 14 goto rnckpi07
if 00 GTR %t%
除非时间是负的,你这个才能成立。
你没搞清楚这个运算符。

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-6-8 18:17:55 | 显示全部楼层
回复 3# 522235677


    谢谢,是我搞反方向了,请问有没什么方法可以代替goto end这个命令来跳出标签?
发表于 2014-6-8 18:18:21 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set t1=%time:~1,1%
  4. set t2=%time:~0,2%
  5. if %t2% lss 10 (
  6.     set t=10%t1%
  7. ) else (
  8.     set t=1%t2%
  9. )

  10. if 100 leq !t! (
  11.     if !t! lss 114 (
  12.         goto rnckpi07
  13.     )
  14. )
  15. if 114 leq !t! (
  16.     if !t! lss 122 (
  17.         goto rnckpi15
  18.     )
  19. )
  20. if !t! geq 122 (
  21.     goto rnckpi23
  22. )
  23. goto end

  24. :rnckpi07
  25. echo rnckpi07
  26. goto end

  27. :rnckpi15
  28. echo rnckpi15
  29. goto end

  30. :rnckpi23
  31. echo rnckpi23
  32. goto end

  33. :end
  34. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2014-6-8 18:24:01 | 显示全部楼层
在每个标签里面的goto end,能不能不用或者用什么代码来跳出标签,然后运行标签外面的其他命令

请举个例子说明一下你想跳到什么地方去执行命令
发表于 2014-6-9 08:48:53 | 显示全部楼层
回复  522235677


    谢谢,是我搞反方向了,请问有没什么方法可以代替goto end这个命令来跳出标签?
iq301 发表于 2014-6-8 18:17



    如果你是想返回到进入标签的地方可以用以下方式:
  1. @echo off
  2. echo Test
  3. call :abc
  4. echo Test2
  5. pause
  6. goto :eof

  7. :abc
  8. echo abc
  9. exit /b
复制代码
使用call来进入标签,使用exit /b用于返回值(返回至调用处),如果是直接进入标签则会导致退出
使用call还可以向标签传递参数。

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-6-9 22:22:01 | 显示全部楼层
回复 7# Tamce


    谢谢,明白了,看来只能用call来走。同时也谢谢楼上各位朋友帮忙,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 04:13 , Processed in 0.020533 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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