【发布时间】:2021-08-22 04:21:38
【问题描述】:
我编写了一个脚本来从 .csv 日志中提取特定事件数据。
2021_06_04 09:00.00, online, Serial#001, 50.10.10.10 2021_06_04 09:01.00, online, Serial#002, 50.10.10.11 2021_06_04 09:01.00, read, Serial#002, apples, clear 2021_06_04 09:01.00, online, Serial#003, 50.10.10.12 2021_06_04 09:01.00, offline, Serial#001 2021_06_04 09:02.00, read, Serial#002, bananas, clear 2021_06_04 09:03.00, read, Serial#003, apples, reject 2021_06_04 09:04.00, read, Serial#002, apples, clear 2021_06_04 09:05.00, read, Serial#003, apples, clear
首先我找到所有联机的机器,并将它们的 IP 地址存储到以它们的序列号命名的变量中
for /f "delims=, tokens=3,4" %%a in (
'type "Log.csv"^|findstr "online"'
) do (
set %%a=%%b
现在这已按预期分配变量,如下所示
%Serial001% = 50.10.10.10 %Serial002% = 50.10.10.11 %Serial003% = 50.10.10.12
现在我想找到每台机器的每个“读取”事件。计算事件数以创建“变量集”
set /p Search=Search:
set EventCount = 0
for /f "delims=, tokens=1,3,5" %%a in (
'type "Log.csv"^|findstr "read"^|findstr %search%'
) do (
set /a EventCount+=1
call set EventTime[%%EventCount%%]=%%a
call set Machine[%%EventCount%%]=%%b
call set Decision[%%BagCount%%]=%%c
)
set TotalCount=%EventCount%
现在我可以显示每个数据集,使用“选择”滚动事件计数
百万美元的问题!
在第二行,我想添加存储在变量中的机器 IP 地址,以机器命名...
%%Machine%% 正在输出%Serial#002%
echo. Search: %search%
echo. Machine: !Machine[%EventCount%]! on %%Machine%%
echo Decision: !Decision[%BagCount%]! @ !EventTime[%EventCount%]!
echo.
echo. %EventCount% of %TotalCount%
预期输出
Search: Apples Machine: Serial#002 on 50.10.10.10 Decision: Clear @ 2021_06_04 09:01.00 1 of 4
如何通过展开以变量命名的变量来显示 IP 地址...
我尝试了所有延迟扩展的组合,但都没有运气。我还想为其他功能调用此 IP 地址,而不仅仅是显示目的。
任何方向都将不胜感激!!
【问题讨论】:
标签: batch-file variables cmd