2016-09-21 5 views
0

いくつかのデータをファイルに記録するツールがあります。ファイルを最後までテロップし、最後の行をmosquitto_pubで送信したいと思います。 私はpowershell "Get-Content"コマンドをsuccesなしで使用しました。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 を使用している場合、ファイルの末尾がstdoutに表示されます。

解決策は何ですか?

ありがとうございます!

答えて

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

関連する問題