首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用批处理挑选严重性最高的值

使用批处理挑选严重性最高的值
EN

Stack Overflow用户
提问于 2012-02-03 17:07:41
回答 1查看 68关注 0票数 2

我有一个CSV文件,格式如下:

代码语言:javascript
复制
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最不严重)。按照这个逻辑,我们可以期待:

代码语言:javascript
复制
Group1 cumulative result = Red
Group2 cumulative result = Amber
Group3 cumulative result = Amber
...

该文件可以有多个这样的组(而不仅仅是3个)

现在,我希望将批处理文件输出到一个文本文件,其中包含以下格式:

代码语言:javascript
复制
Group1,Group2,Group3
Red,Amber,Amber

有没有人对我该怎么做有什么建议?我想可能会涉及到for /f循环。

EN

回答 1

Stack Overflow用户

发布于 2012-02-03 18:58:52

代码语言:javascript
复制
@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%
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9126119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档