【发布时间】:2021-07-21 13:43:07
【问题描述】:
我正在使用下面的 FOR-IN-DO 语法来读取并获取 (>3GB) csv 文件的最后一行
For /F "UseBackQ Delims==" %%A In (test.csv) Do Set "lastline=%%A"
代码适用于小文件。但是,FOR-IN-DO 无法打开大的 csv 文件。这个问题有解决办法吗?
【问题讨论】:
-
批量做这样的事情是个坏主意。即使有可能,它也会非常低效。为什么不使用更好的脚本工具,如 powershell 或 python?
-
将 csv 用于大型数据结构也很糟糕。为此目的,有许多更好的二进制格式
-
FOR命令将整个文件读入内存。由于 cmd.exe 是 32 位程序,因此文件大小限制为 2,147,483,647 字节。如果您想获取文件的最后一行,我建议您使用为此目的设计的工具。它们是在 Windows 上运行的命令TAIL的许多端口。我认为您甚至可以致电 Powershell 来完成此操作。 -
@Squashman 在 64 位 Windows 上分别在
%windir%\System32和%windir%\SysWOW64中有 64 位和 32 位 cmd.exe -
谢谢@phuclv。我也会尝试使用批处理来运行 powershell 或 vb 脚本来做到这一点。
标签: batch-file batch-processing