如何在订阅一个主题时使mosquitto_sub仅打印当前消息

时间:2018-05-13 21:29:07

标签: cmd mqtt mosquitto

mosquitto_sub.exe -h host-p port -t topic-P password -u username  > log_file.txt

通过使用此命令行,所有消息都保存在log_file.txt中,但如何仅将最新消息保存到日志文件中。 据我所知>用于覆盖文件,只在开始时使用它覆盖文本文件,然后开始将所有消息附加到文件中。

2 个答案:

答案 0 :(得分:2)

mosquitto_sub有一个命令行选项-C来控制在现有之前接收的消息数。

mosquitto_sub.exe -h host-p port -t topic -P password -u username -C 1 > log_file.txt

来自mosquitto_sub man页面

  

<强> -C

     

在收到给定的消息数后立即断开并退出程序。这在shell脚本中可能很有用   例如,在需要单个状态值的位置。

非常难看的循环:

@echo off
:top:
mosquitto_sub.exe -h host-p port -t topic -P password -u username -C 1 > log_file.txt
goto top

答案 1 :(得分:0)

您可以将命令嵌入到for / f循环中,逐行处理输出,覆盖文件内容

@Echo off
for /f "delims=" %%A in ('
  mosquitto_sub.exe -h host -p port -t topic -P password -u username
') Do @Echo(%%A>log_file.txt