PowerShell技术求助:查找2GB以上文件并分割压缩为2GB分卷
问题排查与修复方案
核心问题分析
你的脚本存在两个关键错误,直接导致了随机路径访问拒绝:
-Path .指向的是当前PowerShell工作目录,而非你遍历到的目标大文件,这会让Compress-7Zip尝试压缩当前目录下的所有内容,包括你没有访问权限的路径。- 压缩包输出路径未明确指定,默认生成在当前工作目录,若当前目录权限不足或存在重名文件冲突,也会引发权限问题。
修复后的脚本
Get-ChildItem "E:\Folder 1\Folder 2\My Files with sub folders" -Recurse | Where-Object {$_.Length -gt 2147483648} | ForEach-Object { # 明确指定要压缩的单个文件完整路径 $targetFile = $_.FullName # 将压缩包生成在原文件所在目录,避免权限和重名冲突 $archivePath = Join-Path -Path $_.DirectoryName -ChildPath "$($_.Name).zip" Compress-7Zip -Path $targetFile -VolumeSize 2093796556 -ArchiveFileName $archivePath }
额外排查要点
- 权限验证:右键以管理员身份运行PowerShell,确保有足够权限访问目标文件夹和压缩包输出目录。
- 文件占用检查:部分访问拒绝可能是因为目标文件正在被其他程序占用,关闭相关程序后再重试。
- 路径兼容性:目标路径包含空格,脚本中已用引号包裹,这部分没问题,但需确保
7zip4shell能正确识别带空格的路径。
内容的提问来源于stack exchange,提问作者Farhad Bhai
相关产品推荐
相关产品推荐

