如何使用 Windows 批处理读取和编辑 (>3GB) csv 文件?

How to read and edit (>3GB) csv file using Windows Batch?

我正在使用以下 FOR-IN-DO 语法读取并获取 (>3GB) csv 文件的最后一行

For /F "UseBackQ Delims==" %%A In (test.csv) Do Set "lastline=%%A"

该代码适用于小文件。但是,FOR-IN-DO 无法打开大型 csv 文件。这个问题有解决方法吗?

取决于您的源文件的内容,即 CSV 不是 TAB 分隔的,或者包含您需要保留的 TAB 个字符,您也许可以这样做:

Set "SourceFile=test.csv"
For /F %%G In ('%SystemRoot%\System32\find.exe /C /V "" 0^<"%SourceFile%"') Do Set /A "TotalLines=%%G-1"
For /F Delims^=^ EOL^= %%G In ('%SystemRoot%\System32\more.com +%TotalLines% 0^<"%SourceFile%"') Do Set "LastLine=%%G"

根据您的评论,我将对上述内容进行以下修改:

Set "SourceFile=%UserProfile%\Desktop\test.csv"
Set "DestinationDir=%UserProfile%\Documents"
Set "LineMatch=Specific String"
For /F %%G In ('%SystemRoot%\System32\find.exe /C /V "" 0^<"%SourceFile%"') Do Set /A "TotalLines=%%G-1"
For /F Delims^=^ EOL^= %%G In ('%SystemRoot%\System32\more.com +%TotalLines% 0^<"%SourceFile%"') Do If /I "%%G" == "%LineMatch%" Move /Y "%SourceFile%" "%DestinationDir%"