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
正确运行方式
- 按下
Win+R输入powershell打开PowerShell窗口 - 执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,弹出提示输入Y确认,修改当前用户的执行策略 - 用
cd 脚本所在文件夹路径命令进入脚本目录,执行.\脚本文件名.ps1运行即可
文件合并方法
转移完成后,在目标设备的PowerShell中执行以下命令即可还原文件:
Get-Content C:\OutDir\分片_* -Encoding Byte | Set-Content C:\还原后的文件.zip -Encoding Byte
内容的提问来源于stack exchange,提问作者user3166462
相关产品推荐
相关产品推荐

