如何使用if in CMD(.bat文件)检查变量中的数字

时间:2017-10-03 18:01:32

标签: batch-file cmd

我知道如何在命令提示符下检查时间,但我想检查它是否大于或等于数字,我希望下面的例子是清楚的。

@echo off

for /f "tokens=*" %%a in ('time /t') do (
    set t=%%a
)
set "dt=%t%"

if "%dt%" <= "12:00" ( 
    echo it is morning
    pause
)

if "%dt%" >= "12:00" ( 
    echo It is night
    pause
)
timeout /t 10 /nobreak>nul

我试过1200和12:00,有没有办法获得变量的前2个字符?我认为这是最简单的方法。

2 个答案:

答案 0 :(得分:0)

选择变量dt的前2个字符,使用

set "selection=%dt:~0,2%"

0是起始位置,2是长度。

请参阅文档提示中的set /? |more

<强> BUT

if命令对比较运算符有非常具体的要求 - 而><用于重定向文件。

请参阅文档提示中的if /?

答案 1 :(得分:0)

有几种方法可以解决这个问题。我认为这是最简单的一个:

@echo off

set "t=%time::=%"
set /A "dt=t"

if %dt% leq 120000 (
    echo it is morning
    pause
)

if %dt% geq 190000 ( 
    echo It is night
    pause
)

set "t=%time::=%"命令获取%time%动态变量,该变量具有&#34; HH:MM:SS.CC&#34;格式,并指定&#34; HHMMSS.CC&#34;到t变量。然后,set /A "dt=t"命令获取第一个点的数字:&#34; dt = HHMMSS&#34;。之后,只需将这样的值与没有引号进行比较。