batch3
点击次数:更新时间: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
|