Board logo

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

作者: iq301    时间: 2014-6-8 17:50     标题: [已解决]BAT代码的判断语句有没问题,不会跳到指定的标签

请帮忙看下这代码的判断语句有没问题,不会跳到指定的标签,还有再想问下,在每个标签里面的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
复制代码

作者: 522235677    时间: 2014-6-8 18:07

  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
复制代码

作者: 522235677    时间: 2014-6-8 18:09

if 00 GTR %t% if %t% LSS 14 goto rnckpi07
if 00 GTR %t%
除非时间是负的,你这个才能成立。
你没搞清楚这个运算符。

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
作者: iq301    时间: 2014-6-8 18:17

回复 3# 522235677


    谢谢,是我搞反方向了,请问有没什么方法可以代替goto end这个命令来跳出标签?
作者: DAIC    时间: 2014-6-8 18:18

  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
复制代码

作者: DAIC    时间: 2014-6-8 18:24

在每个标签里面的goto end,能不能不用或者用什么代码来跳出标签,然后运行标签外面的其他命令

请举个例子说明一下你想跳到什么地方去执行命令
作者: Tamce    时间: 2014-6-9 08:48

回复  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还可以向标签传递参数。
作者: iq301    时间: 2014-6-9 22:22

回复 7# Tamce


    谢谢,明白了,看来只能用call来走。同时也谢谢楼上各位朋友帮忙,感谢




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