2015-04-21 4 views
1
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% variable Я получаю количество записей базы данных, в echo он отлично работает, выводит число как 132, но в выражении if я могу видеть IF сравнивается не 132, аBatch can not get value in if statement

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

И, таким образом, утверждение IF не работает, имеет ли моя проблема? :) thanks :)

ответ

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" 
0

Это не часть возможностей SQLite. Однако есть обходные пути. См. link.