PowerShell批量解压多份Zip压缩包时出现脚本错误的问题咨询
问题原因
- 核心错误是
-DestinationPath参数的变量引用写法不符合PowerShell语法规则:你写的"{$zip.BaseName}"中,大括号被识别为路径的字面量字符,同时双引号内直接引用变量属性时没有使用$()子表达式运算符,PowerShell仅会展开$zip变量本身,后续的.BaseName会被当做普通字符串拼接,最终传入的是无效路径。 - 第一次解压成功属于巧合,通常是因为首次解析时错误生成的路径刚好和预期路径部分匹配,后续循环时路径完全失效,所以仅能创建空文件夹但无法写入解压内容。
修复方案
修正参数写法即可,以下是可用的完整脚本:
$archives = Get-ChildItem . -Filter *.zip foreach($zip in $archives) { Expand-Archive -Path $zip.FullName -DestinationPath $zip.BaseName -Force }
修正点说明:
- 去掉了参数中多余的大括号和错误的引号包裹,直接传递
$zip.BaseName属性值作为目标路径 - 新增
-Force参数,当目标文件夹已存在时会直接覆盖写入,避免存在残留空文件夹时抛出已存在错误
内容的提问来源于stack exchange,提问作者ElDog
相关产品推荐
相关产品推荐

