我有一个CSV文件,格式如下:
Group Test Result
----------------------
GROUP1 Test1 Amber
GROUP1 Test1 Amber
GROUP1 Test2 Red
Group1 Test3 Amber
Group1 Test4 Green
Group2 Test1 Amber
Group2 Test2 Amber
Group3 Test1 Green
Group3 Test2 Amber
...使用批处理文件,我尝试确定上面列出的每个组的累积结果。对于每个组,累积结果是具有最高严重程度的结果(Red最严重,Amber不太严重,Green最不严重)。按照这个逻辑,我们可以期待:
Group1 cumulative result = Red
Group2 cumulative result = Amber
Group3 cumulative result = Amber
...该文件可以有多个这样的组(而不仅仅是3个)
现在,我希望将批处理文件输出到一个文本文件,其中包含以下格式:
Group1,Group2,Group3
Red,Amber,Amber有没有人对我该怎么做有什么建议?我想可能会涉及到for /f循环。
发布于 2012-02-03 18:58:52
@echo off
setlocal EnableDelayedExpansion
set Green=1
set Amber=2
set Red=3
rem Read file lines and process they
for /F "tokens=1-3" %%a in (thefile.csv) do (
rem Initialize this "group" vector element with zero
if not defined group[%%a] set group[%%a]=0
rem Convert "word" severity to a number between 1 and 3
set severity=!%%c!
rem Store the cumulative result for this group
if !severity! gtr !group[%%a]! set group[%%a]=!severity!
)
rem Convert cumulative group numeric results to "word" results
set Severity[1]=Green
set Severity[2]=Amber
set Severity[3]=Red
for /F "tokens=2,3 delims=[]=" %%a in ('set group[') do (
set group[%%a]=!Severity[%%b]!
)
rem Assemble group names in one line and show they:
set result=
for /F "tokens=2 delims=[]=" %%a in ('set group[') do (
set result=!result!%%a,
)
echo %result:~0,-1%
rem Assemble group cumulative results in one line and show they:
set result=
for /F "tokens=3 delims=[]=" %%a in ('set group[') do (
set result=!result!%%a,
)
echo %result:~0,-1%https://stackoverflow.com/questions/9126119
复制相似问题