Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从CSV读取最大值并写入新CSV_Csv_Batch File - Fatal编程技术网

从CSV读取最大值并写入新CSV

从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

我每天都有新的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 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
将不起作用