从CSV读取最大值并写入新CSV
我每天都有新的CSV文件,从这些文件中必须读取最大值,并且必须将最大值的整行写入新的CSV文件。最大值可能出现多次。CSV文件如下所示,包含1000多行:从CSV读取最大值并写入新CSV,csv,batch-file,Csv,Batch File,我每天都有新的CSV文件,从这些文件中必须读取最大值,并且必须将最大值的整行写入新的CSV文件。最大值可能出现多次。CSV文件如下所示,包含1000多行: "Series";"Time";"Value" "Total Session Number";"2020-01-14 01:00";52 "Total Session Number";"2020-01-14 01:02";53 "Total Session Number";"2020-01-14 01:04";54 "Total Sessio
"Series";"Time";"Value"
"Total Session Number";"2020-01-14 01:00";52
"Total Session Number";"2020-01-14 01:02";53
"Total Session Number";"2020-01-14 01:04";54
"Total Session Number";"2020-01-14 01:06";54
"Total Session Number";"2020-01-14 01:08";194
"Total Session Number";"2020-01-14 17:10";53
"Total Session Number";"2020-01-14 17:42";194
"Total Session Number";"2020-01-14 17:44";194
新csv文件中的结果应如下所示:
"Series";"Time";"Value"
"Total Session Number";"2020-01-14 01:08";194
"Total Session Number";"2020-01-14 17:42";194
"Total Session Number";"2020-01-14 17:44";194
我已经尝试了近几个星期来找到一个如何做到这一点的例子,但没有成功。也许有人能帮我举出一个例子或一段代码来解决我的问题?也许类似于
@echo off
setlocal enabledelayedexpansion
set "input=C:\path\to\input.csv"
set "output=Z:\path\to\output.csv"
set lgr=0
for /f "usebackq tokens=3 delims=;" %%i in ("%input%") do if %%i geq !lgr! set lgr=%%i
type "%input% | findstr /e "\"Value\" ;%lgr%"
只需将文件名input.csv
和input.csv
更改为所需的输入和输出文件名
它的工作原理是,将每一行读入元变量%%a
,然后按拆分该行
并选择第三个令牌(数字),然后匹配每个令牌以查找最大的数字。一旦找到,我们就在文件中键入该数字,并将输出重定向到new\u csv.csv
一些旁注!!
这将只在格式符合给定示例的情况下起作用,如果您有更多分号,它将不起作用,因为这非常明确地使用第三个标记进行计算
最后,如果您的号码包含任何正常的字母字符,而该字符不包含,则它将不起作用。可能类似于
@echo off
setlocal enabledelayedexpansion
set "input=C:\path\to\input.csv"
set "output=Z:\path\to\output.csv"
set lgr=0
for /f "usebackq tokens=3 delims=;" %%i in ("%input%") do if %%i geq !lgr! set lgr=%%i
type "%input% | findstr /e "\"Value\" ;%lgr%"
只需将文件名input.csv
和input.csv
更改为所需的输入和输出文件名
它的工作原理是,将每一行读入元变量%%a
,然后按拆分该行
并选择第三个令牌(数字),然后匹配每个令牌以查找最大的数字。一旦找到,我们就在文件中键入该数字,并将输出重定向到new\u csv.csv
一些旁注!!
这将只在格式符合给定示例的情况下起作用,如果您有更多分号,它将不起作用,因为这非常明确地使用第三个标记进行计算
最后,如果您的号码中包含任何正常的字母字符,那么它将不起作用。您的问题是否需要帮助?我的问题是是否有人可以帮助我。用一个例子或一个代码来解决我的问题(如果已经存在类似的问题)。你的问题是你想帮助寻找一个例子吗?我的问题是是否有人可以帮助我。用一个例子或一个代码来解决我的问题(如果已经存在类似的问题)。现在再试一次。正如@stephan所评论的,在这个例子中我们需要
delayedexpansion
;“时间”;“价值”;“编号”,我是否只需更改“Token=4”和“echo”系列;“时间”;“价值”;“号码”?@angry\u agent123:视情况而定。您想要最高值(令牌3)还是最高数字(令牌4)?如果是“值”,则findstr/e
将不起作用现在再试一次。正如@stephan所评论的,在这个例子中我们需要delayedexpansion
;“时间”;“价值”;“编号”,我是否只需更改“Token=4”和“echo”系列;“时间”;“价值”;“号码”?@angry\u agent123:视情况而定。您想要最高值(令牌3)还是最高数字(令牌4)?如果是“值”,则findstr/e
将不起作用