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

这篇文章介绍了如何在PowerShell中编写脚本,将大文件$inputFile按照$chunkSizeMB的大小分割成多个小文件,存储在$outputFilePrefix目录下。脚本通过流处理逐块读取和写入文件,确保高效且易于管理大文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下代码中把$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.”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值