You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell分割zip等任意文件脚本运行失败问题排查求助

PowerShell大文件拆分脚本问题排查及修复

核心问题点

  • 输出目录不存在:脚本写死输出路径为C:\OutDir,如果该目录未提前创建,[System.IO.File]::OpenWrite会直接抛出异常,默认无错误提示的情况下会直接终止运行,无任何输出。
  • 输入路径未替换:示例调用中传入的输入文件是C:\File_To_Split.iso,如果未替换为你实际要拆分的zip文件路径,文件读取失败会直接终止脚本。
  • 执行策略限制:Windows默认PowerShell执行策略禁止运行未签名脚本,直接双击运行ps1文件会静默失败,不会有任何执行效果。
  • 无错误捕获逻辑:原脚本没有开启错误抛出配置,执行出错时不会输出错误信息,无法定位问题。
  • 运行方式错误:如果直接双击ps1文件运行,脚本执行完成后窗口会自动关闭,你看不到任何执行日志和报错。

修复后可用脚本

# 开启错误抛出,便于排查问题
$ErrorActionPreference = "Stop"

function split($inFile,  $outPrefix, [Int32] $bufSize){
  # 自动创建输出目录,避免目录不存在报错
  $outputDir = "C:\OutDir"
  if (-not (Test-Path $outputDir)) {
    New-Item -ItemType Directory -Path $outputDir | Out-Null
  }

  $stream = [System.IO.File]::OpenRead($inFile)
  $chunkNum = 1
  $byteArray = New-Object byte[] $bufSize

  while( $bytesRead = $stream.Read($byteArray,0,$bufsize)){
    $outFile = "$outputDir\$outPrefix$chunkNum"
    $ostream = [System.IO.File]::OpenWrite($outFile)
    $ostream.Write($byteArray,0,$bytesRead);
    $ostream.Close();
    Write-Host "已生成文件:$outFile"
    $chunkNum += 1
  }
  # 关闭输入文件流,避免文件占用
  $stream.Close();
}

# 请将下方第一个参数替换为你实际要拆分的zip文件路径
# 第三个参数为单分片大小(字节),10MB对应10485760,1.5GB拆分后约154个分片,满足100个以上的需求
split "C:\要拆分的文件.zip" "分片_" 10485760

正确运行方式

  1. 按下Win+R输入powershell打开PowerShell窗口
  2. 执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,弹出提示输入Y确认,修改当前用户的执行策略
  3. 用cd 脚本所在文件夹路径命令进入脚本目录,执行.\脚本文件名.ps1运行即可

文件合并方法

转移完成后,在目标设备的PowerShell中执行以下命令即可还原文件:

Get-Content C:\OutDir\分片_* -Encoding Byte | Set-Content C:\还原后的文件.zip -Encoding Byte

内容的提问来源于stack exchange,提问作者user3166462

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:18:04