Batch file 将具有大量行的文件拆分为固定行的较小文件的最佳方法是什么?

Batch file 将具有大量行的文件拆分为固定行的较小文件的最佳方法是什么?,batch-file,Batch File,我有几个包含大约50k行的文件。我需要把它们分成更小的文件,每个文件有1k行。在windows平台上执行此操作的最佳方法是什么 如有任何意见,将不胜感激 谢谢, Pavan.创建一个powershell文件,并使用.ps1扩展名保存该文件,然后添加以下powershell代码 $Input = "LARGEFILE.txt" $outName = "smallerfile" $extension = "txt" $Max = 10kb $inputFile = [io.file]::OpenRe

我有几个包含大约50k行的文件。我需要把它们分成更小的文件,每个文件有1k行。在windows平台上执行此操作的最佳方法是什么

如有任何意见,将不胜感激

谢谢,
Pavan.

创建一个powershell文件,并使用
.ps1
扩展名保存该文件,然后添加以下powershell代码

$Input = "LARGEFILE.txt"
$outName = "smallerfile"
$extension = "txt"
$Max = 10kb
$inputFile = [io.file]::OpenRead($Input)
$buffers = new-object byte[] $Max
$count = $lump = 0
try {
    do {
           $count = $inputFile.Read($buffers, 0, $buffers.Length)
           if ($count -gt 0) {
           $to = "{0}.{1}.{2}" -f ($outName, $lump, $extension)
           $toFile = [io.file]::OpenWrite($to)
           try {

               $tofile.Write($buffers, 0, $count)
            } finally {
                $tofile.Close()
            }
        }
        $lump ++
    } while ($count -gt 0)
}
finally {
    $inputFile.Close()
}
您需要给出输入文件的完整路径和名称,这将是一个大文件。然后给出所需输出文件的唯一名称,它将为您存储每个文件的编号。您还可以调整输出文件的大小。因此,在本例中,它将从
LARGEFILE.txt
smallerfile.1.txt
smallerfile.2.txt
smallerfile.3.txt
等创建10kb的文件


PS!!您可以从
cmd.exe
运行该文件,方法是以
powershell.\scriptname.ps1
运行,或者用脚本的完整路径替换
\
。您也可以直接从powershell运行它。

使用批处理文件可以完成,但速度非常慢。使用Powershell也可以做到这一点,但当文件较大时,速度也会变慢,可能是通过安装GNU CoreUtils的一部分
split
,它可以安装在Windows上,使其功能更加强大和有用。