batch2
点击次数:更新时间:2025-02-27 15:02:41【打印】【关闭】
@echo off setlocal enabledelayedexpansion
:: 输入与输出路径 set "input_dir=pg1" set "output_csv=output3.csv"
:: 初始化 CSV 文件 echo ログファイル,ログ内容,PG,プロセス,開始時間,終了時間,処理所要時間(ms)> "%output_csv%"
:: 遍历 pg 文件夹及子文件夹下的所有 .log 文件 (for /r "%input_dir%" %%F in (*.log) do ( set "log_file=%%~nxF"
:: 提取 PG(文件名包含 msnd) set "pg=" for %%b in (%%~nF) do ( echo %%b | findstr /i "msnd" >nul && set "pg=%%b" )
set "process=" set "start_time=" set "end_time=" set "log_content="
:: 读取日志文件并处理内容 for /f "usebackq tokens=* delims=" %%L in ("%%F") do ( set "line=%%L"
if "!line!"=="二次応答受信" ( for /f "tokens=2 delims=[]" %%x in ("!line!") do ( set "process=%%x" set "process=!process:msn=!" ) )
if "!line!"=="リクエスト電文受信" ( set "start_full_time=!line:~0,23!" set "log_content=リクエスト電文受信" )
if defined start_time if "!line!"=="応答電文送信" ( set "end_full_time=!line:~0,23!" set "log_content=応答電文送信"
:: 计算时间差 call :time_diff "!start_full_time!" "!end_full_time!"
:: 缓存 CSV 内容 set "csv_line=!log_file!,!log_content!,!pg!,!process!,!start_full_time!,!end_full_time!,!time_diff_result!" echo !csv_line! ) ) )) >> "%output_csv%"
echo 完成!CSV 文件已生成:%output_csv% pause exit /b
:: 时间差计算函数 :time_diff setlocal enabledelayedexpansion for /f "tokens=1-4 delims=:." %%a in ("%~2") do ( set /a sh=%%a, sm=%%b, ss=%%c, sms=%%d ) for /f "tokens=1-4 delims=:." %%a in ("%~3") do ( set /a eh=%%a, em=%%b, es=%%c, ems=%%d ) set /a start_ms=(sh*3600000)+(sm*60000)+(ss*1000)+sms set /a end_ms=(eh*3600000)+(em*60000)+(es*1000)+ems set /a diff=end_ms - start_ms endlocal & set "time_diff_result=%diff%" exit /b |