自动分割文本编辑器打不开的超大文本文档

发布于:2024-04-08 ⋅ 阅读:(111) ⋅ 点赞:(0)

以下代码中把$inputFile和$outputFilePrefix 分别换成你的文件和需要分割后放到的文件夹;

# 定义要分割的文件路径和分割后文件的前缀  
$inputFile = "D:\logheiping\Logs\CNGarage.log"  
$outputFilePrefix = "D:\logheiping\Logs\splitlog"  
$chunkSizeMB = 100 # 每个小文件的大小(单位:MB)  
  
# 计算每个分块的大小(以字节为单位)  
$chunkSizeBytes = $chunkSizeMB * 1MB  
$buffer = New-Object byte[] $chunkSizeBytes  
$fileCount = 1  
  
# 读取大文件并分割成小文件  
$stream = $null  
try {  
    $stream = [System.IO.File]::OpenRead($inputFile)  
    while (($bytesRead = $stream.Read($buffer, 0, $buffer.Length)) -gt 0) {  
        $outputFilePath = Join-Path $outputFilePrefix ("{0:D3}.log" -f $fileCount)  
        $outputStream = $null  
        try {  
            $outputStream = [System.IO.File]::Create($outputFilePath)  
            $outputStream.Write($buffer, 0, $bytesRead)  
        }  
        finally {  
            if ($outputStream -ne $null) {  
                $outputStream.Close()  
                $outputStream.Dispose()  
            }  
        }  
        $fileCount++  
    }  
}  
finally {  
    if ($stream -ne $null) {  
        $stream.Close()  
        $stream.Dispose()  
    }  
}  
  
Write-Host "File has been split into $($fileCount - 1) chunks."

在你的PowerShell 中执行PowerShell.exe -ExecutionPolicy Bypass -File D:\logheiping\Logs\splitfile.ps1
等待执行完毕会打印“File has been split into (分割成了多少个文件) chunks.”


网站公告

今日签到

点亮在社区的每一天
去签到