使用Expand-Archive解压zip到%AppData%目录仅生成同名文件如何解决
PowerShell使用Expand-Archive解压到APPDATA目录的解决方法
- 问题根因:PowerShell 不支持 CMD 风格的
%环境变量名%语法,当你直接将包含%APPDATA%的字符串传给-DestinationPath参数时,系统会将其识别为普通路径文本,因此会在当前工作目录下生成名为%APPDATA%的文件夹,无法映射到实际的用户配置目录。 - 正确实现方案:PowerShell 中读取系统环境变量需要使用
$env:前缀,获取当前用户APPDATA路径的写法为$env:APPDATA,拼接子目录即可得到正确的目标路径。 - 修正后的完整可运行代码:
$SourcePath = "nameoffile.zip" # 拼接得到 %APPDATA%\Folder\Folder\Folder\Folder\Folder 的实际路径 $Destination = Join-Path -Path $env:APPDATA -ChildPath "Folder\Folder\Folder\Folder\Folder" # 可选:提前创建目标目录,避免低版本PowerShell解压时报路径不存在错误 if (-not (Test-Path -Path $Destination)) { New-Item -Path $Destination -ItemType Directory -Force | Out-Null } Expand-Archive -Path $SourcePath -DestinationPath $Destination -Force Write-Host "nameofzipfile unzipped successfully"
- 额外说明:使用
Join-Path拼接路径可以自动适配系统的路径分隔符,避免手动拼接时漏写、多写反斜杠导致的路径错误。PowerShell 5.1及以上版本的Expand-Archive已经支持自动创建不存在的目标父目录,添加目录创建逻辑只是为了兼容更低版本的运行环境。
内容的提问来源于stack exchange,提问作者Craig
相关产品推荐
相关产品推荐

