wgetのDOSポートを使用してAPIからデータを収集し、ログファイルのデータを生成しています(これは後日分析されます)。APIは、現在の時刻を除いて、必要なすべての情報を提供します(データのストリームの開始時の時刻を提供しますが、その後は提供しません)。
APIは、通常、最初に10行のデータを提供し、その後20〜30秒ごとに1行を提供します。
この出力にタイムスタンプを付けてログファイルにコピーしようとしています-タイムスタンプが出力の残りの行と同じ行にあるか、前の行にあるかは関係ありません。
私は最初にこのバッチファイルから始めました:
addtimes.bat:
@echo off >nul
:start
set /p input="":
echo %time%
echo %input%
goto:start
(「wget ..... | addtimes.bat> log.log」と呼ばれます)
ただし、これによりデータが削除され、多くのデータ行の先頭が失われました。
ここを見て、forループを使用する必要があることに気付きました。
addtimes2.bat:
@echo off
cls
setlocal EnableDelayedExpansion
for /F "tokens=*" %%a in ('more') do (
echo !time! %%a )
)
遅延拡張を有効にする場合と有効にしない場合で試しました。
異なるタイムスタンプで一度に1行ずつ情報を渡すことができないようです。データストリームを閉じると、すべての行が同じタイムスタンプを取得します。
一般的な入力データの形式は次のとおりです。
[1,"219","265",14528,1359031137000,1359031137000]
[1,"6594","358",18188,1359031019000,1359031019000]
[1,"690","94",15920,1359031534000,1359031534000]
[1,"25164","102",2129,1359031457000,1359031457000]
[1,"3488","329",2109,1359030868000,1359030868000]
[1,"37247","6",11506,1359031223000,1359031223000]
データにUTC時刻があることに気付くかもしれませんが、それらは現在の時刻ではありません。