【问题标题】:Batch: I want to call a command after 5 am yet it outputs it less than 5 am no matter what批处理:我想在凌晨 5 点之后调用一个命令,但无论如何它都会在凌晨 5 点不到输出它
【发布时间】:2013-07-10 18:32:20
【问题描述】:

没有

@echo off

set hh=!tm:~0,2
set mm=!tm:~3,2
set ss=!tm:~5,2
set ms=!tm:~7,2

if !hh! gtr **5** (
    echo gtr 5
    pause
    goto success
)


pause
goto fail

:success
echo Success!
pause
exit

:fail
echo Fail!
pause
exit

@echo off

set hh=!tm:~0,2
set mm=!tm:~3,2
set ss=!tm:~5,2
set ms=!tm:~7,2

if !hh! gtr **05** (
    echo gtr 5
    pause
    goto success
)


pause
goto fail

:success
echo Success!
pause
exit

:fail
echo Fail!
pause
exit

按我的需要工作

这应该让它在上午 10 点输出大于上午 5 点。它只说它不到早上 5 点,即使它是上午 10 点。最重要的是,如果我将时间设置为凌晨 5 点,它仍然会说它小于凌晨 5 点且不等于凌晨 5 点。

它仅适用于单个数字的任何时间,例如 0-9(即上午 12 点至上午 9 点)。任何时候都是两位数,所以 10-23(上午 10 点到晚上 11 点)可以正常工作并说出正确的话。

【问题讨论】:

    标签: batch-file command dos timed


    【解决方案1】:

    试试这个:

    @ECHO OFF &SETLOCAL
    set /a HH=0
    FOR /f "tokens=1*delims=0" %%a IN ("$0%time:~0,2%") DO SET /a HH=%%b 2>nul
    IF %HH% GTR 5 ECHO Alert!
    

    【讨论】:

    • 在小时和分钟内工作得很好,但似乎不想在 ~5,2 的位置工作几秒钟。
    • 我在:~6,2 有几秒钟的时间(查看:23:32:39,70
    • 我在 ~6,2 运行它,它似乎在选择它想要停止或不停止。它对 0 真的很挑剔,它只是飞过并说缺少操作。
    • echo %time% 的输出是什么?
    • 我发现它只在经历 0 秒的任何时间时才会发生。即使我不想在 0 秒时停止它。现在,尝试让它在 15 秒停止,但提前 1 毫秒停止,这似乎更稳定。代码:@ECHO OFF :time echo %time% FOR /f "tokens=1*delims=0" %%a IN ("$0%time:~6,2%") DO SET /a SS=%%b IF %SS% equ 15 goto success goto time :success echo success finally pause goto time
    【解决方案2】:
    @ECHO OFF
    SETLOCAL
    SET testvalues=" 1" " 4" " 5" " 6" "10" "12" "13" "19" "20" "23" "01" "04" "05" "06" "08" " 0" 
    FOR %%i IN (%testvalues%) DO CALL :test2 %%i
    echo==================================
    FOR %%i IN (%testvalues%) DO CALL :test %%i
    GOTO :eof
    :test
    SET value=%~1
    SET "HH="
    FOR /f "delims=0" %%a IN ("%value:~0,2%") DO SET /a HH=%%a
    IF %HH% GTR 5 (ECHO Alert! FOR %1 ) ELSE (ECHO Silent FOR %1 )
    
    GOTO :EOF
    :test2
    SET value=%~1
    SET "HH="
    
    SET /a HH=1%value: =0%
    IF %HH% GTR 105 (ECHO Alert! FOR %1 ) ELSE (ECHO Silent FOR %1 )
    
    GOTO :EOF
    

    结果:

    Silent FOR " 1" 
    Silent FOR " 4" 
    Silent FOR " 5" 
    Alert! FOR " 6" 
    Alert! FOR "10" 
    Alert! FOR "12" 
    Alert! FOR "13" 
    Alert! FOR "19" 
    Alert! FOR "20" 
    Alert! FOR "23" 
    Silent FOR "01" 
    Silent FOR "04" 
    Silent FOR "05" 
    Alert! FOR "06" 
    Alert! FOR "08" 
    Silent FOR " 0" 
    =================================
    Silent FOR " 1" 
    Silent FOR " 4" 
    Silent FOR " 5" 
    Alert! FOR " 6" 
    Silent FOR "10" 
    Alert! FOR "12" 
    Alert! FOR "13" 
    Alert! FOR "19" 
    Silent FOR "20" 
    Alert! FOR "23" 
    Silent FOR "01" 
    Silent FOR "04" 
    Silent FOR "05" 
    Alert! FOR "06" 
    Alert! FOR "08" 
    Missing operand.
    5 was unexpected at this time.
    

    注意:更正了 hours=10、20 和 0 的行为

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-04
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多