Batch file 从csv获取最大百分比

Batch file 从csv获取最大百分比,batch-file,Batch File,如何获取每个科目的最大百分比和学生id?这里有一个vbscript,您可以尝试 subject score studentid xx 23.22% 1 yy 34% 2 zz 55.2% 3 xx 88.66% 4 yy 23.76% 5 zz 78.04% 6 输出 Set objFS = CreateObject("Scripting.FileSystemObject") Set objArgs = WScript.Arguments Set d = CreateO

如何获取每个科目的最大百分比和学生id?

这里有一个vbscript,您可以尝试

subject score studentid
xx   23.22% 1
yy  34% 2
zz  55.2%   3
xx  88.66%  4
yy  23.76%  5
zz  78.04%  6
输出

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
Set d = CreateObject("Scripting.Dictionary")
Set e = CreateObject("Scripting.Dictionary")
strFile = objArgs(0)
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    strLine=objFile.ReadLine
    s = Split(strLine," ")
    subject =s(0)
    score= Left(s(1),Len(s(1))-1)
    studentid=s(2)
    If Not d.Exists(subject) Then
        d.Add subject, score
        e.Add subject, studentid
    Else
        If score >= d.Item(subject)  Then           
            d.Item(subject) = score
            e.Item(subject) = studentid
        End If
    End If
Loop
j=d.Keys
For Each stritems In j
    WScript.Echo "Subject:"&stritems & ", Score: "& d.Item(stritems) & "%, StudentID: " & e.Item(stritems)
Next

您需要有某种类型的集合来处理每个主题的总计,这可能会有所帮助

C:\test>type file
xx 23.22% 1
yy 34% 2
zz 55.2% 3
xx 88.66% 4
yy 23.76% 5
zz 78.04% 6

C:\test>cscript //nologo test.vbs file
Subject:xx, Score: 88.66%, StudentID: 4
Subject:yy, Score: 34%, StudentID: 2
Subject:zz, Score: 78.04%, StudentID: 6

@堆栈-您开始冒险执行实际的数据处理。我强烈推荐cmd脚本以外的其他工具。对于这种类型的处理,批处理文件在很多地方表现不好。使用vbscript、perl、basic和python—几乎可以使用Windows/DOS/cmd脚本之外的任何东西。查看这个答案,可以找到一本关于批处理文件的好书,以及我建议您使用其他东西的更多细节:不是perl,而是batch。由于您的脚本在比较。。。我们如何进行数字比较?
@echo off 

  set CountXX=1
  set CountYY=2


  set This=XX
  call :Resolve Count%This%
  echo %RetVal%


  set This=YY
  call :Resolve Count%This%
  echo %RetVal%

  set /a Count%This%=%RetVal% + 2 

  call :Resolve Count%This%
  echo %RetVal%

goto :eof


:Resolve


  for /f "delims== tokens=2" %%a in ('set %1') do set retval=%%a

goto :eof