2016-09-21 3 views
0

У меня есть инструмент, который регистрирует некоторые данные в файле. Я хотел бы зачеркнуть файл и отправить последнюю строку данных через mosquitto_pub. Я использовал команду powershell «Get-Content» без прецедентов. Вот моя команда:Get-Content mosquitto_pub

Get-Content -Path "C:\test.txt" -Wait | .\mosquitto_pub.exe -t "Events"

Но ничто не публикуется mosquitto_pub.

Если я использую Get-Content -Path "C:\test.txt" -Wait Я вижу хвост файла в стандартном режиме.

Что не так с моим решением?

Спасибо!

ответ

0

Прочитано Q and A.

Альтернативный подход

$minsToRunFor = 10 
$secondsToRunFor = $minsToRunFor * 60 

foreach ($second in $secondsToRunFor){ 

    $lastline = Get-Content -Path "C:\test.txt" | Select-Object -last 1 

    # added condition as per VonPryz's good point 
    # (otherwise will add lastline regardless of whether it's new or not) 
    if ($lastline -ne $oldlastline){ 
     .\mosquitto_pub.exe -t "Events" -m "$lastline" 
    } 

    $oldlastline = $lastline 
    Start-Sleep 100 
} 
+0

Не будет ли это продолжать посылать последнюю строку снова и снова, даже если не новый контент не добавляется? – vonPryz

+0

Спасибо, исправленный ответ. – gms0ulman

+0

... Если файл не будет добавлен с одним и тем же контентом несколько раз. Или он будет добавляться несколько раз в период сна ... – vonPryz

Смежные вопросы