将curl post的输出与IF ELSE语句一起使用

时间:2019-02-08 15:44:59

标签: windows api batch-file if-statement curl

我想运行一个bat文件,检查curl请求的输出,并在满足条件时采取相应措施。

bat文件中的curl请求如下:

curl --insecure -X POST https://api.zilliqa.com/ -H "Content-type: application/json" --data "{\"id\":\"1\", \"jsonrpc\":\"2.0\", \"method\":\"GetNumTxBlocks\", \"params\":"[""]"}"

请求的输出如下:{"id":"1","jsonrpc":"2.0","result":"5820"}

,结果是数字,一直在增长。 作为完整的新手,我不知道如何进行。 请给我建议,最好也能提供示例。

我希望IF语句在结果的后两位数大于95时作出反应。这是否还可行?现在的结果是4位数字,但是会增长,依次为5位和6位数字。

希望有可能。如果没有,请提出可能的解决方案。

1 个答案:

答案 0 :(得分:2)

AS curl.exe返回一个类似于{"id":"1","jsonrpc":"2.0","result":"5965"}的json字符串

您可以使用for / f解析:

@Echo off
for /f "usebackq tokens=4 delims=:}" %%A in (`
    curl --insecure -X POST https://api.zilliqa.com/ -H "Content-type: application/json" --data "{\"id\":\"1\", \"jsonrpc\":\"2.0\", \"method\":\"GetNumTxBlocks\", \"params\":"[""]"}"
`) do set "result=%%~A"
Echo result=%result%

要计算最后两位数字,将其模数除以100,然后与if进行比较

Set /A "Last2Digits=result %% 100"
if %Last2Digits% gtr 95 (Echo greater 95) else ( echo less or equal 95)  

或在PowerShell中执行

$result = (curl.exe --% --insecure -X POST https://api.zilliqa.com/ -H "Content-type: application/json" --data "{\"id\":\"1\", \"jsonrpc\":\"2.0\", \"method\":\"GetNumTxBlocks\", \"params\":"[""]"}"|ConvertFrom-json).result