在dos / windows中隐藏jq的状态输出

时间:2014-12-03 00:26:07

标签: json batch-file curl jq

我正在使用curl for windows(http://www.confusedbycode.com/curl/)和jq(http://stedolan.github.io/jq/)通过批处理文件与web api进行交互。我遇到的看似简单的问题是无论我做什么,我都无法抑制JQ的“状态”输出。特别是,它总是输出“进度状态”,如:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed
100   116  100    99  100    17    908    155 --:--:-- --:--:-- --:--:--   908

简化的示例批处理文件是:

@echo off
@curl.exe -H "Content-Type: application/json" -d '{\"cmd\":\"login\"}' http://localhost:80/json | jq -r .session > sess.txt

请注意,jq确实按预期运行 - 我只需要让它以静默方式运行 。它似乎忽略了@echo,我在手册中找不到任何开关来禁用此输出。

任何想法......?

提前多多谢谢:)

2 个答案:

答案 0 :(得分:14)

curl --silent
-s, --silent
  Silent or quiet mode. Do not show progress meter or error messages. Makes Curl
  mute.

答案 1 :(得分:1)

解决方案:为了删除curl restful api响应上的进度条,请使用--silent标志(简称-s)或使用--no-progress-meter。我建议使用后者,因为您希望收到有关不良响应的警告和信息性消息。

示例

1。 curl -s <Web-Address>curl --silent <Web-Address>

2。 curl --no-progress-meter <Web-Address>

更多Curl Documentation

-s, --silent

Silent or quiet mode. Don't show progress meter or error messages. 
Makes Curl mute. 
It will still output the data you ask for, potentially even to the terminal/stdout unless you redirect it.

Use -S, --show-error in addition to this option to disable progress meter but still show error messages.

--no-progress-meter

Option to switch off the progress meter output without muting or otherwise affecting warning and informational messages like -s, --silent does.

Note that this is the negated option name documented. You can thus use --progress-meter to enable the progress meter again.