如何使用 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%"
我正在使用以下 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%"