批处理不能在if语句中获取值

时间:2015-04-21 05:40:56

标签: batch-file if-statement sqlite

setlocal enabledelayedexpansion
    set "count=SELECT COUNT(*) FROM Events;| sqlite3.exe system_events"
    echo %count% 
    set "sk=1000"
    if %count% gtr %sk% (
        echo Delete from Events where Id IN ( Select Id from Events limit 1^) ;| sqlite3.exe system_events" 
        pause
    )
    set "laik=%time:~0,2%:%time:~3,2%:%time:~6,2%"
    echo INSERT INTO Events (Date, Time, Error_type) Values ("%Date%", "%laikas%", 0);| sqlite3.exe system_events

我有这个问题,在%count%变量中我得到数据库的记录数,在echo中工作正常它输出数字如132,但在if语句中我可以看到IF比较不是132而是

>if SELECT COUNT(*) FROM Events;|sqlite3.exesystem_even
ts gtr 1000 (

以这种方式IF语句不起作用,我的问题是什么? :)谢谢:))

2 个答案:

答案 0 :(得分:1)

问题不在if,而在set。从命令检索输出并将其分配给变量的方法是使用for /f命令

for /f "delims=" %%a in ('
    cmd /q /c "echo select count(*) from Events;" ^|sqlite system_events
') do set "count=%%a"

答案 1 :(得分:0)

它不是SQLite功能的一部分。但是有一些解决方法。见link.